Javaの三項演算子の使い方!(ifとの違い・複数書くと?)

Java Java

Javaで三項演算子の使い方について書いています。
if文との違いや、複数書いたときの注意点についても記載しました。

載せているコードについては、OpenJDKのバージョン19で動作を確認しました。

Javaの三項演算子の使い方

Javaの三項演算子は、条件式の結果に応じて、2つの値のどちらかを返してくれる構文です。

例えば、下記のように書くことができます。

String fruit = null;
String result = fruit == null ? "nullでした" : "何かの果物です";

System.out.println(result); // nullでした

最初にfruit変数に対して、nullを代入しています。

次の処理で、三項演算子を使っています。「fruit == null ? ...」の箇所です。
fruit == null」で、fruit変数がnullかを判定しています。
条件式で判定して、合っていたらコロン(:)の左側を、違うときにはコロン(:)の右側を返します。

今回はnullだったときに、文字列の「nullでした」が返って、nullでないときには「何かの果物です」が返ります。
今回は、fruit変数はnullが設定されているので、result変数には「nullでした」が代入されます。

結果、最後にresult変数の値を出力していますが「nullでした」が出力されて処理が終わります。

三項演算子の条件式について

シンプルに三項演算子を日本語化すると、下記のようになります。

条件式 ? "trueのときに返る値" : "falseのときに返る値"; 

繰り返しになりますが、trueの時はコロン(:)の左側、falseの時はコロン(:)の右側を返します。

if文との違いは?

if文は丸括弧に条件を書いて、判定しました。
同じように判定を書いて比べてみます。

if文だと、下記のようになります。

int score = 0;
String result = "";

if (score == 0) {
    result = "0点です";
} else {
    result = "1点以上";
}

System.out.println(result); // 0点です

これが三項演算子だと、下記のようになります。

int score = 0;
String result = score == 0 ? "0点です" : "1点以上";

System.out.println(result); // 0点です

内容としては、score変数の値が0だったら「0点です」を、そうじゃないときには「1点以上」を返します。
両方を見比べると、三項演算子の方が少ない行数でシンプルではないでしょうか。

このくらい簡単な条件式の場合には、三項演算子を使うと、処理がシンプルになって良いかと思います。

複数の条件を1行に書くことができる

複数の条件を1行に書くこともできます。
例えば、下記のように書きます。

int score = 10;
String result = score >= 1 ? score >= 10 ? "10以上です" : "1〜9です" : "0です";

System.out.println(result); // 10以上です

最初にscore変数に「10」を代入しています。

次の処理で、三項演算子を使っています。
最初の条件式「score >= 1」でtrueだったときには、また三項演算子を使って「score >= 10」を判定しています。

今回は値が「10」なので、2回の判定でtrueになり、「10以上です」がresult変数に返ります。
このように、三項演算子を重ねて書くことができます。

ですが、このような使い方はコードが見づらくなるため、シンプルにひとつの条件だけの時に使うようにした方が良いかと思います。

三項演算子の使い方まとめ

今回はJavaで三項演算子の使い方について書きました。
記事の内容をまとめると、下記のようになります。

・三項演算子は条件式の結果に応じて、コロンの左側または右側の値を返す。(`条件式 ? true : false`)
・簡単な条件式ならif文を書くよりも、簡潔に処理が書けて見やすくなる。
・複数の条件を1行に書くこともできるが、なるべく避けたほうがいい。

コメント

タイトルとURLをコピーしました