Java 速習チュートリアル

Java の三項演算子

1. 三項演算子(Ternary Operator)の基本

Javaには、三項演算子(Ternary Operator)と呼ばれる短縮版の if else 文が存在します。これは3つのオペランド(被演算子)で構成されることからその名が付いています。

三項演算子を活用することで、複数行にわたるコードをわずか1行に置き換えることができます。主に、単純な if else 文を簡略化する際に非常に重宝します。

1.1 構文(Syntax)

変数 = (条件式) ? 真の場合の式 : 偽の場合の式;

2. if-else文との比較

まず、従来の if-else 文を使った書き方を見てみましょう。

2.1 従来の書き方

int time = 20;
if (time < 18) {
  System.out.println("Good day.");
} else {
  System.out.println("Good evening.");
}

これを三項演算子を使って書き換えると、次のように非常にシンプルになります。

2.2 三項演算子を使った書き方

int time = 20;
// timeが18未満なら "Good day."、そうでなければ "Good evening." を代入
String result = (time < 18) ? "Good day." : "Good evening.";
System.out.println(result);

2.3 出力メソッド内での直接利用

一時的な変数を用意せず、System.out.println() の中で直接三項演算子を使用することも可能です。

int time = 20;
System.out.println((time < 18) ? "Good day." : "Good evening.");

3. 三項演算子のネスト(オプション)

三項演算子をネスト(入れ子)にすることで、3つ以上の条件を扱うことも可能ですが、やりすぎるとコードの可読性が著しく低下するため注意が必要です。

3.1 ネストした三項演算子の例

int time = 22;
String message = (time < 12) ? "Good morning."
               : (time < 18) ? "Good afternoon."
               : "Good evening.";

System.out.println(message);

       エンジニアからのアドバイス: 三項演算子は、短くシンプルな二者択一のロジックに適しています。処理が複雑になったり、条件が重なったりする場合は、無理に1行にまとめず通常の if...else 文を使う方が、チーム開発におけるメンテナンス性は高くなります。