🍍
【基本】javaとkotlinの文法比較
想定読者
- javaを普段使っている
- kotlinをこれから使いたい or 使う予定がある
本記事では、javaとkotlinの文法上の相違点をまとめます。本記事に記載されている以外にも様々な相違点があるので、雰囲気だけでもお伝えできればと思います。
kotlinは2011年にJetBrain社が開発した静的型付けのオブジェクト指向言語です。Javaをもっと簡潔・安全になるように改良しておりJVM上で動作します。
変数宣言
kotlinでは末尾のセミコロンが必要ありません。
varは再代入可能、valは再代入不可となります。
java
String str = "abc";
int num = 123;
// 定数はfinalを使用
final String str = "abc";
kotlin
var str: String = "abc"
var num: Int = 123
// 型推論もあるため以下のように書ける
var num = 10
// 定数はvalを使用
val str: String = "abc"
null安全
javaではStringにnullを入れることが可能ですが、kotlinで同じように書けません。
java
String str = null
kotlin
var str: String? = null
// 構文エラーになります
var str: String = null
Stringの後ろに?をつけてあげる必要があります。これをオプショナルと言い、nullを許容できます。
nullチェックもより簡潔に書けます。
java
if (str != null) {
println(str)
}
kotlin
str?.let { println(str) }
nullableな変数の呼び出しには?が必要です。?は変数がnullであるかをチェックしてnullであれば以降を処理しません。
また、以下のような3項演算子もkotlinではエルビス演算子(?:
)を使用して、より簡潔に記述できます。
java
String tmp = (str != null) ? str : ""
kotlin
val tmp = str ?: ""
switch文
kotlinにはswitchがなく、代わりにwhenを使用します。
java
switch (str) {
case "A":
println("Aクラス");
break;
case "B":
println("Bクラス");
break;
default:
println("該当なし");
}
kotlin
when (str) {
"A" -> println("Aクラス")
"B" -> println("Bクラス")
else -> println("該当なし")
}
Discussion