【第2回】KotlinとJavaの変数の扱いを比較してみた
IT技術
【第2回】JavaからKotlinへ変えていくためのお勉強
(株)ライトコードの秋山(あきやま)です!
Androidアプリ開発していくにあたり「JavaからKotlinへ変えていくためのお勉強」という記事を連載をしています。
さて、前回は『Kotlinとはどういったものか』や『どんなことを勉強していくのか』をお話ししました。
そして、今回からは本格的にKotlinに触れていきたいと思います!
Java経験者の僕が、初歩からKotlinを解説していきますので、一緒に勉強していきましょう!
第1回はこちら
Kotlinでの変数の扱いについて
まずは、プログラミングの基本中の基本である、変数の扱いから始めたいと思います。
早速いってみましょう!
Javaの場合
Javaでは、文字列や数字を扱う時、このように記述しますよね?
1//宣言
2String str = "abc";
3int num = 123;
4double dNum = 20.5;
5boolean bl = true;
6
7//コンソール表示
8System.out.println(str);
9System.out.println(num);
10System.out.println(dNum);
11System.out.println(bl);
[結果]
abc
123
20.5
true
Kotlinの場合
それでは、Kotlinでは、一体どのように書けるでしょうか?
1//宣言
2val str: String = "abc"
3val num: Int = 123
4val dNum: Double = 20.5
5val bl: Boolean = true
6
7//コンソール表示
8println(str)
9println(num)
10println(dNum)
11println(bl)
[結果] (Javaの時と同じ結果になります)
abc
123
20.5
true
Kotlinでは、「val 変数名: 型 = 値」といった形で書くことができます。
この時、行の末尾に「;」は不要になります。
ちなみに、コンソール表示の記述は、Kotlinでは「println(値)」と書くことが出来ます。
1行で記述することも可能
そして、下記のように複数の命令文を「;」で区切れば、1行で記述することも可能です。
1//宣言
2val 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//varでの宣言
2var str: String = "abc"
3var num: Int = 123
4var dNum: Double = 20.5
5var bl: Boolean = true
「val」で定義した場合、それ以降中身は変更出来ません。
変数というよりも、下記Javaの、定数のような扱いということができます。
1final String str = "abc";
ですので、以下のように「val」で定義した場合は途中で変数の中身を変更することは出来ないと覚えておいてください。
1val str: String = "abc"
2str = "def" // ←出来ない
「var」は中身を変更できる
逆に、「var」で定義した場合は、以下のようにその後も変数の中身を変更出来ます。
1var str: String = "abc"
2str = "def" // ←defに置き換えられる
ぱっと見、「val」と「var」って似ているので最初は迷うかもしれません。
似ていますが、全然性質が違いますので、用途に合わせて使い分けていきましょう。
「val」は「value」の略
「var」は「variable」の略
型推論
さて、先ほどの表記ですが、実は、さらに簡単に書くことが出来ます。
1//宣言
2val str = "abc"
3val num = 123
4val dNum = 20.5
5val bl = true
Kotlinは型を指定しなくても良い
なんと、Kotlinの場合、型を指定しなくても「型推論」という機能によって内部で判断してくれます。
数値の場合、桁数や小数点の有無によって表現の仕方が変わりますが、以下のようにスッキリ書くことが出来ます。
1val num1 = 100 // 主にInt型の時はそのまま
2val num2 = 2000000000L // 末尾にLを付けると、Long型として推論される
3val dNum1 = 30.8 // 小数点が付いている場合、Double型として推論される
4val dNum2 = 40.9f // 末尾にfかFを付けると、Float型として推論される
文字の連結
次は、文字の連結についてです。
文章を表示する時に、変数の結果を連結して表示することは、まあよくありますよね。
では、簡単な例をJavaで表示してみたいとおもいます。
Javaの場合
1//宣言
2int num = 18;
3
4//コンソール表示
5System.out.println("今日の気温は、" + num +"度です。");
1[結果]
2今日の気温は、18度です
これですね。
では、同じ内容を、Kotlinで記述するとどうなるでしょうか?
Kotlinの場合
1//宣言
2val num = 18
3//コンソール表示
4println("今日の気温は、" + num + "度です。")
1[結果]
2今日の気温は、18度です
基本的には、Javaと同様の書き方が出来ます。
でも、Kotlinでは、以下のようにも書き換えることができるのです!
1println("今日の気温は、${num}度です。")
文字列の「""(ダブルクオーテーション)」の中でも「${変数}」と記述すれば変数の前後を「+」で連結しなくても表記出来るので大変便利です!
2.文章によっては混乱しやすくなってしまう
nullの扱い
Kotlinでは、String型の変数に「null」を入れたい場合、どうすればいいのでしょうか?
では、例をあげて説明していきます。
Javaの場合
1String nullStr = null;
これは、よくJavaで見かける書き方だと思います。
では、Kotlinではどのように書くでしょうか?
Kotlinの場合
1//val nullStr: String = null // ←そのままではエラー
2val nullStr: String? = null //型の末尾に「?」を付けることによってnull許容
Javaの感覚を引きづったまま、「null」を入れようとすると、エラーになります。
この場合の解決方法としては、型の末尾に「?」を付けることによってnullを許容することになります。
ただ、ここでnullを許容したとしてもこの後に続く処理等で問題が起きるかもしれません…
第2回へつづく!
さいごに、ちょっと怖いことを書いて終わりにしました(笑)
長くなってしまうため、「null」についてはこの辺までとさせていただきます。
実際の処理で起こりそうな細かいことは、今後の記事で書いていきたいと思います!
今回は、変数の扱いで主なものをザッとまとめてみました。
ありがとうございました!
オススメ本
第2回はこちら
こちらの記事もオススメ!
2020.08.14スマホ技術 特集Android開発Android開発をJavaからKotlinへ変えていくためのお勉強DelegatedPropert...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
第1回はこちら
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
元ファストフード店長代理のJava系ITエンジニア。 Webサイト系の開発や運用をいくらか経験し、 現在はAndroidアプリ開発を主に担当したり。 休みの日はゲームとか風景写真撮りに行ったりとかマラソンしたりとか。