Kotlinのwhen式の使い方!Javaのswitchに相当する書き方を解説
生徒
「KotlinにはJavaのswitch文みたいなものがありますか?」
先生
「はい!Kotlinではswitch文の代わりにwhen式を使います。とても便利なので、一緒に使い方を学んでいきましょう。」
生徒
「どうやって書くんですか?書き方を教えてください!」
先生
「では、Kotlinのwhen式の基本的な書き方から見ていきましょう!」
1. Kotlinのwhen式とは?
Kotlinのwhen式は、条件によって処理の内容を切り替えるための構文です。Javaで使われていたswitch文の代わりとして用意されており、Kotlinではこちらを使うのが基本になります。
プログラムでは「値によって動きを変えたい」という場面がよくあります。たとえば「数字が1なら○○、2なら△△」のような判断です。こうした条件分岐(じょうけんぶんき)を、when式を使うと読みやすく書けます。
難しく考えなくても大丈夫です。when式は「今の値がどれに当てはまるかを順番にチェックする仕組み」だと思ってください。
fun main() {
val signal = "青"
when (signal) {
"赤" -> println("止まりましょう")
"青" -> println("進んでも大丈夫です")
"黄" -> println("注意して進みましょう")
else -> println("信号の色が分かりません")
}
}
この例では、signalの値によって表示されるメッセージが変わります。値が「青」なので、「進んでも大丈夫です」と表示されます。
このようにwhen式を使うと、「どの値のときに、何をするのか」が一目で分かるコードになります。条件が増えても整理しやすいのが、Kotlinのwhen式の大きな特徴です。
2. when式の基本的な書き方
Kotlinのwhen式は、「いま入っている値が何か」を見て、実行する処理を切り替えます。基本形は、when (値)のあとに、条件 -> やることを並べるだけなので、初めてでも読みやすいです。
たとえば、テストの点数(数字)から「評価」を表示したいときなど、同じ変数を何度も比べる場面で便利です。もしifをたくさん並べると長くなりがちですが、whenならスッと整理できます。
fun main() {
val number = 2
when (number) {
1 -> println("数字は1です")
2 -> println("数字は2です")
3 -> println("数字は3です")
else -> println("1から3以外の数字です")
}
}
この例では、numberの値に合う行だけが実行されます。numberが2なので、「数字は2です」が表示されます。
また、どれにも当てはまらない場合に備えてelseを書いておくと安心です。たとえば0や100などが入っても、プログラムが困らずに「それ以外」として処理できます。
3. 実行結果の確認
では、さきほどのプログラムを実行したときに「画面に何が出るのか」を確認してみましょう。printlnは、カッコの中に書いた文章をそのまま表示する命令です。
今回の例では、numberに2が入っているので、when (number)の中で2 ->の行が選ばれます。その結果、次の1行が出力されます。
数字は2です
もしnumberを1に変えれば「数字は1です」、3に変えれば「数字は3です」と表示されます。逆に、0や10のように当てはまらない値なら、elseのメッセージが表示されます。実行結果を見ると、条件分岐がちゃんと動いているかがすぐ分かります。
4. elseとは?
elseは、「どの条件にも当てはまらなかった場合に実行される部分」です。もし1~3以外の数字が入っていたら、elseの中の内容が実行されます。
5. when式を使った文字の例
数字だけではなく、文字や文字列でもwhen式は使えます。たとえば曜日を表す文字列で切り替える場合を見てみましょう。
fun main() {
val day = "月曜日"
when (day) {
"月曜日" -> println("週のはじまりですね")
"金曜日" -> println("週末が近いですね")
"土曜日", "日曜日" -> println("お休みの日ですね")
else -> println("平日です")
}
}
このようにwhen式では、カンマ,を使って複数の条件をまとめて書くこともできます。
6. 値を返すwhen式の使い方
when式は、条件によって違う値を変数に入れることもできます。これはwhenが「式(しき)」だからです。次の例を見てください。
fun main() {
val number = 3
val message = when (number) {
1 -> "数字は1です"
2 -> "数字は2です"
else -> "それ以外の数字です"
}
println(message)
}
when式の結果をmessageという変数に入れて、あとからprintlnで表示しています。条件ごとに違う文字列を作るときに便利です。
7. Kotlinのwhen式とJavaのswitch文のちがい
Javaではswitch文を使いますが、Kotlinではwhen式を使います。Kotlinのwhen式は次のような特徴があります。
- 条件にカンマを使って複数の値をまとめて書ける
- elseが必ず最後に書ける
- 式として使えて、値をそのまま代入できる
これにより、条件が多いプログラムでもすっきり書けます。
8. when式のポイント
ここまで、Kotlinのwhen式の基本的な使い方を解説しました。Javaのswitch文のように条件ごとに処理を切り替えられますし、条件に合わない場合はelseでまとめて書けるのが便利です。when式は「プログラムの条件分岐」にとてもよく使われるので、ぜひ覚えておいてくださいね!
まとめ
ここまで、Kotlinのwhen式について、基本的な書き方から実際の使用例、そしてJavaのswitch文との違いまで幅広く触れてきました。振り返ってみると、when式は条件分岐をシンプルに書けるだけではなく、複数条件をまとめて扱えたり、式として値を返すことができたりと、多くの場面で役に立つ構文であることがわかります。特に、複雑な条件を書かずにすっきりとまとめられる点は、大規模なプログラムや長い処理を書いていく場面で大きな力を発揮します。
初心者のうちは、条件分岐の書き方に迷うこともありますが、when式の柔軟さを理解して使いこなせるようになれば、より読みやすく保守しやすいコードが書けるようになります。when式は数字だけでなく、文字列や範囲、さらには条件そのものを評価するパターンも扱うことができます。こうした特徴は、日常的なプログラムの中でも頻繁に利用される要素となり、シンプルな判断から複雑なロジックまで幅広く応用できます。
さらに、when式が「式」であることにより、値を返す構文としても扱える点は、Javaのswitchに比べて明確な違いとなっています。単に条件に応じて処理を切り替えるだけではなく、条件に応じて変数に値を代入する処理を簡単に書けるため、コードの見通しが良くなり、記述量も減らすことができます。また、elseを使って「どれにも当てはまらない場合」の処理をまとめて書ける点は、予期しない値が入力されたときの安全性にもつながります。
そして、複数条件をカンマでまとめられる機能は、例えば曜日や種別などの分類が必要な場面で非常に有用です。「土曜日」と「日曜日」をセットで扱いたいような場合でも、個別に条件を書かなくて済むため、プログラム全体の見通しも自然と向上します。開発現場ではこのようなケースが多く存在するため、when式の理解はKotlinを書いていく上で欠かせない基礎力のひとつになります。
以下に、今回学んだ内容を簡潔にまとめつつ、応用の幅を広げられるサンプルプログラムを用意しました。ひとつのプログラムの中で複数のwhen式の特徴を確認できるように構成しています。学習の復習と理解の定着に役立ててください。
サンプルプログラム:when式を使った複数条件の処理例
fun describeNumber(num: Int): String {
return when (num) {
1 -> "いちをえらびました"
2, 4, 6, 8 -> "偶数のなかでも特定の数字です"
in 10..20 -> "10から20の範囲にふくまれています"
else -> "その他のすべての数字です"
}
}
fun checkDay(day: String): String {
return when (day) {
"月曜日" -> "しゅうのはじまりです"
"金曜日" -> "しゅうまつまでもうすこしです"
"土曜日", "日曜日" -> "おやすみです"
else -> "へいじつです"
}
}
fun main() {
val numberMessage = describeNumber(12)
println(numberMessage)
val dayMessage = checkDay("土曜日")
println(dayMessage)
val result = when (val value = 3) {
1 -> "ひとつの値"
2 -> "ふたつの値"
else -> "それいがいの値:$value"
}
println(result)
}
生徒
「きょうのまとめを読んで、when式がとても便利なことがわかってきました。switchより書きやすいという理由がよく理解できました!」
先生
「その理解はすばらしいですよ。Kotlinのwhen式は、読みやすさと柔軟さが大きな強みです。値を返せるところも特徴的ですね。」
生徒
「複数の条件をカンマでまとめられるのも便利ですね。曜日の例は実際のアプリでも使えそうだなと思いました。」
先生
「そうそう。土日をまとめて条件に書きたい場面はよくありますからね。範囲指定もできるので、数字の判定に使っても効率的です。」
生徒
「値を返すwhen式もおもしろいですね。変数に代入して使えるのは便利ですね。」
先生
「そのとおりです。とてもよく使うパターンなので、コードを書くたびに慣れていくと思いますよ。これからもっと複雑な条件の処理にも挑戦していってください。」