
【第2回】KotlinとJavaの変数の扱いを比較してみた
2020.08.21
目次
【第2回】JavaからKotlinへ変えていくためのお勉強
秋山さん
(株)ライトコードの秋山(あきやま)です!
Androidアプリ開発していくにあたり「JavaからKotlinへ変えていくためのお勉強」という記事を連載をしています。
さて、前回は『Kotlinとはどういったものか』や『どんなことを勉強していくのか』をお話ししました。
そして、今回からは本格的にKotlinに触れていきたいと思います!
Java経験者の僕が、初歩からKotlinを解説していきますので、一緒に勉強していきましょう!
第1回はこちら
こちらの記事もオススメ!
Kotlinでの変数の扱いについて
まずは、プログラミングの基本中の基本である、変数の扱いから始めたいと思います。
早速いってみましょう!
Javaの場合
Javaでは、文字列や数字を扱う時、このように記述しますよね?
1 2 3 4 5 6 7 8 9 10 11 | //宣言 String str = "abc"; int num = 123; double dNum = 20.5; boolean bl = true; //コンソール表示 System.out.println(str); System.out.println(num); System.out.println(dNum); System.out.println(bl); |
[結果]
abc
123
20.5
true
Kotlinの場合
それでは、Kotlinでは、一体どのように書けるでしょうか?
1 2 3 4 5 6 7 8 9 10 11 | //宣言 val str: String = "abc" val num: Int = 123 val dNum: Double = 20.5 val bl: Boolean = true //コンソール表示 println(str) println(num) println(dNum) println(bl) |
[結果] (Javaの時と同じ結果になります)
abc
123
20.5
true
Kotlinでは、「val 変数名: 型 = 値」といった形で書くことができます。
この時、行の末尾に「;」は不要になります。
ちなみに、コンソール表示の記述は、Kotlinでは「println(値)」と書くことが出来ます。
1行で記述することも可能
そして、下記のように複数の命令文を「;」で区切れば、1行で記述することも可能です。
1 2 | //宣言 val str: String = "abc"; val num: Int = 123; val dNum: Double = 20.5; val bl: Boolean = true |

Kotlinでのvalとvarの違い
kotlinでは、「val」の代わりに「var」でも表現できるのです。
では、「val」と「var」の違いを見ていきましょう!
「val」は中身を変更できない
1 2 3 4 5 | //varでの宣言 var str: String = "abc" var num: Int = 123 var dNum: Double = 20.5 var bl: Boolean = true |
「val」で定義した場合、それ以降中身は変更出来ません。
変数というよりも、下記Javaの、定数のような扱いということができます。
1 | final String str = "abc"; |
ですので、以下のように「val」で定義した場合は途中で変数の中身を変更することは出来ないと覚えておいてください。
1 2 | val str: String = "abc" str = "def" // ←出来ない |
「var」は中身を変更できる
逆に、「var」で定義した場合は、以下のようにその後も変数の中身を変更出来ます。
1 2 | var str: String = "abc" str = "def" // ←defに置き換えられる |
ぱっと見、「val」と「var」って似ているので最初は迷うかもしれません。
似ていますが、全然性質が違いますので、用途に合わせて使い分けていきましょう。


「val」は「value」の略
「var」は「variable」の略
型推論
さて、先ほどの表記ですが、実は、さらに簡単に書くことが出来ます。
1 2 3 4 5 | //宣言 val str = "abc" val num = 123 val dNum = 20.5 val bl = true |
Kotlinは型を指定しなくても良い
なんと、Kotlinの場合、型を指定しなくても「型推論」という機能によって内部で判断してくれます。
数値の場合、桁数や小数点の有無によって表現の仕方が変わりますが、以下のようにスッキリ書くことが出来ます。
1 2 3 4 | val num1 = 100 // 主にInt型の時はそのまま val num2 = 2000000000L // 末尾にLを付けると、Long型として推論される val dNum1 = 30.8 // 小数点が付いている場合、Double型として推論される val dNum2 = 40.9f // 末尾にfかFを付けると、Float型として推論される |

文字の連結
次は、文字の連結についてです。
文章を表示する時に、変数の結果を連結して表示することは、まあよくありますよね。
では、簡単な例をJavaで表示してみたいとおもいます。
Javaの場合
1 2 3 4 5 | //宣言 int num = 18; //コンソール表示 System.out.println("今日の気温は、" + num +"度です。"); |
1 2 | [結果] 今日の気温は、18度です |
これですね。
では、同じ内容を、Kotlinで記述するとどうなるでしょうか?
Kotlinの場合
1 2 3 4 | //宣言 val num = 18 //コンソール表示 println("今日の気温は、" + num + "度です。") |
1 2 | [結果] 今日の気温は、18度です |
基本的には、Javaと同様の書き方が出来ます。
でも、Kotlinでは、以下のようにも書き換えることができるのです!
1 | println("今日の気温は、${num}度です。") |
文字列の「""(ダブルクオーテーション)」の中でも「${変数}」と記述すれば変数の前後を「+」で連結しなくても表記出来るので大変便利です!


2.文章によっては混乱しやすくなってしまう

nullの扱い
Kotlinでは、String型の変数に「null」を入れたい場合、どうすればいいのでしょうか?
では、例をあげて説明していきます。
Javaの場合
1 | String nullStr = null; |
これは、よくJavaで見かける書き方だと思います。
では、Kotlinではどのように書くでしょうか?
Kotlinの場合
1 2 | //val nullStr: String = null // ←そのままではエラー val nullStr: String? = null //型の末尾に「?」を付けることによってnull許容 |
Javaの感覚を引きづったまま、「null」を入れようとすると、エラーになります。
この場合の解決方法としては、型の末尾に「?」を付けることによってnullを許容することになります。
ただ、ここでnullを許容したとしてもこの後に続く処理等で問題が起きるかもしれません…
第2回へつづく!
さいごに、ちょっと怖いことを書いて終わりにしました(笑)
長くなってしまうため、「null」についてはこの辺までとさせていただきます。
実際の処理で起こりそうな細かいことは、今後の記事で書いていきたいと思います!
今回は、変数の扱いで主なものをザッとまとめてみました。
ありがとうございました!

オススメ本
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、「好きを仕事にするエンジニア集団」です。
Androidアプリ開発のご依頼・お見積もりはこちらまでお願いします。
また、Androidアプリ系エンジニアを積極採用中です!詳しくはこちらをご覧ください。
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。
第2回はこちら
こちらの記事もオススメ!
第1回はこちら
ライトコードよりお知らせ






一緒に働いてくれる仲間を募集しております!
ライトコードでは、仲間を募集しております!
当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。
また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!
なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。
ライトコードでは一緒に働いていただける方を募集しております!
採用情報はこちら書いた人はこんな人
- 元ファストフード店長代理のJava系ITエンジニア。
Webサイト系の開発や運用をいくらか経験し、
現在はAndroidアプリ開発を主に担当したり。
休みの日はゲームとか風景写真撮りに行ったりとかマラソンしたりとか。
IT技術2019.06.18Android 9(Pie)の電源周りとアラームについて
IT技術2019.05.09【第4回】KotlinとJavaの「繰り返し文」の書き方を比較してみた
IT技術2019.04.24【第3回】KotlinとJavaの「条件分岐と範囲」の書き方を比較してみた
IT技術2019.04.10【第2回】KotlinとJavaの変数の扱いを比較してみた