🍍

【基本】javaとkotlinの文法比較

2024/06/18に公開

想定読者

  • 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