お疲れ様です。
はるさらと申します。
今回はJavaの三項演算子についてを記載していきます。
Javaを学び始めたばかりの方にとって、
「三項演算子(条件演算子)」という言葉は
聞き慣れないかもしれません。
三項演算子を使用しなくてもif文で事足りるため
覚えずに実装を進めている方もいますが、
現場によってはコードレビューで引っかかってしまうこともしばしば。。
ですがJavaでは、三項演算子(java 三項演算子 解説)を使うことで、
条件分岐をより簡潔に書くことができ、
コードをより効率的に書けるようになります。
この記事では、三項演算子の基本から、
if文との違い、ネスト構造の扱い、
評価順序、ラムダ式との組み合わせ、
他言語との比較まで、
実際のコードも交えながら解説していきます。
◆ 三項演算子とは?
三項演算子は、下記の様に
if-else文を1行で書ける便利な構文です。
条件式 ? 真の処理 : 偽の処理;
実際にソースに起こしてみると
int score = 80;
String result = (score >= 60) ? “合格” : “不合格”;
System.out.println(result); // 合格
これをif文で書くと以下の様になります。
String result;
int score = 80;
if (score >= 60) {
result = “合格”;
} else {
result = “不合格”;
}
System.out.println(result); // 合格
同じ処理でも、
三項演算子の方が1行で書けてスッキリします。
◆ 三項演算子の評価順序について
三項演算子は次の順番で評価されます。
1. まず条件式が評価される
2. 条件が true なら ? の右側(真)の値が返る
3. 条件が false なら : の右側(偽)の値が返る
このため、不要な処理は評価されないという
「短絡評価」的な動作も備えています。
boolean isDebug = false;
String result = isDebug ? getDebugLog() : “ログ省略”;
public static String getDebugLog() {
System.out.println(“ログ取得処理が呼ばれました”);
return “詳細ログ”;
}
isDebug = false の場合、
getDebugLog() は呼ばれません。
◆ ネストした三項演算子(入れ子構造)の使い方
条件が複数ある場合、
三項演算子をネスト(入れ子)に
することもできます。
ただし、読みづらくなるので注意が必要です。
int score = 75;
String grade = (score >= 80) ? “A” :
(score >= 60) ? “B” :
“C”;
System.out.println(“成績: ” + grade);
改行やインデントを使うと、
見やすさがグッと上がります。
◆ Java 8以降での応用:ラムダ式と組み合わせる
Java 8以降で登場したラムダ式とも
三項演算子は相性が良いです。
boolean isDebugMode = true;
Runnable task = isDebugMode
? () -> System.out.println(“デバッグモードです”)
: () -> System.out.println(“通常モードです”);
task.run();
このように、条件によって異なる処理を選択し、
後で実行するパターンでも活用できます。
◆ 他言語との違い・共通点
三項演算子はJava以外の言語でも使われています。
たとえば:
【JavaScript】
let score = 70;
let result = (score >= 60) ? “Pass” : “Fail”;
【C言語】
int x = 10, y = 20;
int max = (x > y) ? x : y;
Javaと類似した構文なので、
他の言語に取り組む際にも役立ちます。
◆ まとめ
三項演算子は 条件 ? 真 : 偽 の形式で、
if文をコンパクトに書ける便利な構文となります。
簡単な条件分岐に使うと、コードがスッキリしますが、
逆に複雑な分岐に使用すると可読性は下がるため
注意が必要です。
ぜひ使いこなしてコードを
スマートに仕上げていきましょう!
どなたかのお役に立てば幸いです。
それではまたー!!