1. 導入:なぜ三項演算子を使うのか?
Javaでコードを書いていると、「ある条件によって値を切り替えたいだけなのに、if-else文を使うと行数が増えてしまう」という場面によく遭遇します。例えば、変数の代入やメソッドの引数指定などです。三項演算子を活用することで、こうした単純な条件分岐を1行で記述できるようになり、コードの可読性とメンテナンス性が劇的に向上します。
2. 基礎知識:三項演算子とは?
三項演算子は、Javaにおいて「3つの項(条件式、真の場合の結果、偽の場合の結果)」をとる唯一の演算子です。基本構文は「条件式 ? 真の場合の値 : 偽の場合の値」となります。if-else文の簡易版と考えると分かりやすいでしょう。
3. 実装/解決策
三項演算子を使う最大のコツは「複雑なロジックには使わない」ことです。ネスト(入れ子)にしてしまうと、途端にコードが読みづらくなります。単純な値の判定や、nullチェック後のデフォルト値設定など、「結果を返す」ことに特化して使うのがプロの流儀です。
4. サンプルプログラム
以下のコードは、点数に応じて「合格」「不合格」を判定し、メッセージを作成する例です。
public class TernarySample {
public static void main(String[] args) {
int score = 85;
// if-else文で書くと4〜5行かかる処理を1行で記述
// 条件 ? 真の場合 : 偽の場合
String result = (score >= 60) ? "合格" : "不合格";
System.out.println("あなたの結果は:" + result);
// 応用:nullチェックにも便利です
String input = null;
// inputがnullなら"デフォルト値"、そうでなければinputの値を代入
String message = (input != null) ? input : "デフォルト値";
System.out.println("メッセージ:" + message);
}
}
5. 応用・注意点:現場での心得
現場で三項演算子を使う際、以下の点に注意してください。
1. ネストを避ける
三項演算子の中にさらに三項演算子を入れるのは避けましょう。他のエンジニアがコードを読む際、条件の解読に時間がかかり、バグの温床になります。その場合は素直にif-else文や、Java 14以降で導入されたswitch式(yieldを使用)を検討してください。
2. 副作用を避ける
三項演算子の「値」の部分に、メソッド呼び出しなどの「副作用(値の変化やDB操作など)」を伴う処理を書くのは禁物です。条件によって実行される・されないが明確でないため、予期せぬ挙動を引き起こします。
3. 型の一致
三項演算子の「真の場合の値」と「偽の場合の値」は、型が一致(または互換性がある型)している必要があります。コンパイルエラーを防ぐため、型には常に意識を向けましょう。
適切に使えば非常に強力な武器になる三項演算子。まずは単純な値の代入から使いこなしてみてください。

コメント