
【第3回】KotlinとJavaの「条件分岐と範囲」の書き方を比較してみた
2021.12.20
【第3回】JavaからKotlinへ変えていくためのお勉強

(株)ライトコードの秋山(あきやま)です!
Androidアプリ開発していくにあたり「JavaからKotlinへ変えていくためのお勉強」という記事を連載をしています。
さて、前回は、「Kotlinの変数の扱い方」を勉強してみました。
そして、今回は「Kotlinの条件分岐と範囲」をJavaと比較しながら勉強していきたいと思います!
Java経験者の僕が、初歩からKotlinを解説していきますので、一緒に勉強していきましょう!
第2回はこちら
条件分岐と範囲
今回は、条件分岐と範囲について解説していきます!
それでは、簡単な「if文」から見ていくことにしましょう!
Javaの場合
「200以下」か「200より上」かを判定する簡単なif文を作ってみました。
Javaで書くと以下の通りとなります。
1 2 3 4 5 6 7 8 9 | // 宣言 int num = 123; // 判定とコンソール表示 if (num <= 200) { System.out.println(num + "は、200以下です"); } else { System.out.println(num + "は、200より上です"); } |
[結果]
123は、200以下です
Kotlinの場合
同様の文をKotrinで書く場合はこのようになります。
1 2 3 4 5 6 7 8 9 | // 宣言 val num = 123 // 判定とコンソール表示 if (num <= 200) { println("${num}は、200以下です") } else { println("${num}は、200より上です") } |
[結果]
123は、200以下です
判定自体は変わりませんね。
Javaの場合
上の条件を「0以上かつ200以下である」といった条件に切り替えてみたいと思います。
1 2 3 4 5 6 7 8 9 | // 宣言 int num = 123; // 判定とコンソール表示 if (0 <= num && num <= 200) { System.out.println(num + "は、0から200の範囲内です"); } else { System.out.println(num + "は、0から200のの範囲外です"); } |
Kotlinの場合
Kotlinに置き換えるとこんな感じで書くことができます。
1 2 3 4 5 6 7 8 9 | // 宣言 val num = 123 // 判定とコンソール表示 if (0 <= num && num <= 200) { println("${num}は、0から200の範囲内です") } else { println("${num}は、0から200の範囲内です") } |
整数の範囲:IntRange型
上記のKotlinのコードの条件式の
1 | if (0 <= num && num <= 200) { |
この部分は、Kotlinでは、以下のようにも記述することが出来ます。
1 | if (num in 0..200) { |
『比較する値 in 最小値..最大値』という式となります。
IntRange型
このように整数の「最小値 <= X <= 最大値」といった範囲の表現は「最小値..最大値」という形で表すことができます。
これは「IntRange型」と呼ばれます。
1 2 3 | val range: IntRange = 0..200 あるいは val range = 0..200 // 型推論 |
これを踏まえると先ほどの記述は、以下のようにあらわすことができます。
1 2 3 4 5 6 7 8 9 10 | // 宣言 val num = 123 val range = 0..200 // 判定とコンソール表示 if (num in range) { println("${num}は、0から200の範囲内です") } else { println("${num}は、0から200の範囲外です") } |


文字の範囲:CharRange型
また、整数だけではなく、文字の範囲を判定するものもあります。
文字の範囲は「CharRange型」というのが用意されています。
1 2 3 4 5 6 7 8 9 10 | // 宣言 val char1 = 'D' val cRange1: CharRange = 'B'..'F' // 判定とコンソール表示 if (char1 in cRange1) { println("${char1}は、BからFの範囲内です") } else { println("${char1}は、BからFの範囲外です") } |
[結果]
DはBからFの範囲内です
大文字と小文字
また、大文字と小文字は区別されます。
1 2 3 4 5 6 7 8 9 10 | // 宣言 val char2 = 'd' // 小文字が対象の場合 val cRange2: CharRange = 'B'..'F' // 大文字のBからFが対象 // 判定とコンソール表示 if (char2 in cRange2) { println("${char2}は、BからFの範囲内です") } else { println("${char2}は、BからFの範囲外です") } |
[結果]
dは、BからFの範囲外です
ひらがな
英字だけでなく、ひらがなでも範囲を判定することが出来ます。
1 2 3 4 5 6 7 8 9 10 11 | // 宣言 val char3 = 'え' //ひらがなを判定の対象とする val cRange3: CharRange = 'あ'..'お' // 「あ」から「お」の間を判定 // 判定とコンソール表示 if (char3 in cRange3) { println("「${char3}」は、「あ行」です") } else { println("「${char3}」は、「あ行」ではありません") } |
[結果]
「え」は、「あ行」です


if文の戻り値
if文の使い方によっては、判定後の結果を次の処理に使いたい時があるかと思います。
まずは、Javaでの例を見てみましょう。
Javaの場合
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 宣言 int num = 123; String ans = ""; // if文の結果を受け取る変数 // 判定 if (0 <= num && num <= 200) { ans = num + "は0と200の範囲内です"; } else { ans = num + "は0と200の範囲外です"; } // コンソール表示 System.out.println(ans); |
[結果]
123は0と200の範囲内です
if文の箇所では、判定結果をあらかじめ用意していた変数に入れるだけにし、その後の処理でその変数を表示する、といった流れです。
これをKotlinで書くとどうなるか見ていきましょう!
Kotlinの場合
1 2 3 4 5 6 7 8 9 10 11 12 | // 宣言 val num = 123 // 判定 val ans = if (num in 0..200) { "${num}は0と200の範囲内です" } else { "${num}は0と200の範囲外です" } // コンソール表示 println(ans) |
[結果]
123は0と200の範囲内です
Kotlinでは、上記のように、if文を式として扱うことができます。
また、通った方のブロック内の最後の値が戻り値として渡されます。
1 2 3 4 5 6 7 8 | // 判定 var ans = if (num in 0..200) { "テスト1" "${num}は0と200の範囲内です" } else { "テスト2" "${num}は0と200の範囲外です" } |
最後の値というのは、上記のようにブロック内にいろんな処理があったとしても、戻されるのは一番最後の「"${num}は0と200の範囲内です"」の部分が戻り値となります。
実際に、上記のような記述はあまり意味の無い感じですが、処理の流れとして見てください。


whenの扱い方
Kotlinには、条件判断として「when」というものがあります。
まずは、簡単な例を見てみましょう!
Kotlinの「when」について
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // 宣言 val num = 3 //判定とコンソール表示 when (num) { 1 ー> { println("いち") } 2 ー> { println("に") } 3 ー> { println("さん") } else ー> { println("その他") } } |
[結果]
さん
また、判定の値を「,」で区切ることによって
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // 宣言 val num = 4 //判定とコンソール表示 when (num) { 1 ー> { println("いち") } 2 ー> { println("に") } 3, 4 ー> { println("さん、または、し") } else ー> { println("その他") } } |
[結果]
さん、または、し
(num == 3 || num == 4)のようなor判定が出来ます。
上記は「when」の右横に引数(num)を準備しましたが、以下のように「when」の右横に引数を置かずに、各判定箇所にそれぞれの判定式を置く書き方もあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // 宣言 val num = 4 //判定とコンソール表示 when { (num == 1) ー> { println("いち") } (num == 2) ー> { println("に") } (num == 3 || num == 4) ー> { println("さん、または、し") } else ー> { println("その他") } } |
[結果]
さん、または、し
また、「when」も「if」と同様に式として扱うことが出来るので、下記のような書き方も出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // 宣言 val num = 3 //判定 val ans = when (num) { 1 ー> { "いち" } 2 ー> { "に" } 3 ー> { "さん、または、し" } else ー> { "その他" } } //コンソール表示 println(ans) |
[結果]
さん、または、し
第3回へつづく!




オススメ本
第3回はこちら
こちらの記事もオススメ!
第1回はこちら
書いた人はこんな人
- 元ファストフード店長代理のJava系ITエンジニア。
Webサイト系の開発や運用をいくらか経験し、
現在はAndroidアプリ開発を主に担当したり。
休みの日はゲームとか風景写真撮りに行ったりとかマラソンしたりとか。
IT技術11月 17, 2023システム移行時のログメッセージ引き継ぎで経験したこと
IT技術12月 22, 2021【第2回】Spring bootで運動記録をDBに記録してみた(DB作成編)
IT技術11月 16, 2021【第1回】Spring bootで運動記録をDBに記録してみた(準備編)
IT技術6月 18, 2019Android 9(Pie)の電源周りとアラームについて