Javaには「if-else文」を1行で簡単に記述できる三項演算子があります。
しかし、初心者にとっては「書き方や使い方がいまいちわからない…」と悩んでいる方も多いのではないでしょうか?そこで、この記事では三項演算子について以下の内容で解説していきます!
- 【基礎】三項演算子とは
- 【基礎】三項演算子の使い方
- 【発展】三項演算子を使う時の注意事項
- 【発展】複数の条件をネスト(入れ子)で使う方法
三項演算子は使い方さえ覚えてしまえば、非常に便利ですのでぜひ理解しておきましょう!
なお、Javaの記事については、こちらにまとめています。
三項演算子とは
三項演算子とは、if文のように条件分岐で使用する演算子です。三項演算子は、if文の省略や代替として使用します。
しかし、三項演算子は複雑な処理では読みにくくなり可読性を損なうので、処理によってif-else文と使い分けてください。三項演算子は次のように記述します。
条件式 ? trueの場合の戻り値 : falseの場合の戻り値
条件式が「true」の場合と、「false」の場合で戻り値を変えることができるので、条件分岐に使用できます。
三項演算子の使い方
ここでは、三項演算子の使い方を解説します。三項演算子はif文の代わりに使うことができます。
次のプログラムで三項演算子の使い方をif文と比較して確認してみましょう。
public class Main { public static void main(String[] args) { String str = "abc"; String result; // 三項演算子の場合 result = (str == "abc") ? "Samurai" : "Engineer"; System.out.println(result); // if文の場合 if (str == "abc") { result = "Samurai"; } else { result = "Engineer"; } System.out.println(result); } }
実行結果:
Samurai Samurai
このようにして、if文の代わり三項演算子を使うことができました。
三項演算子を使う時の注意事項
三項演算子は、条件によって返す値を変えたいときに使います。そのため、値を返さずに処理を分岐させたいときには使えません。処理を変えたいときにはif文を使うようにしましょう。
複数の条件をネスト(入れ子)で使う方法
三項演算子もネスト(入れ子)で使うことができます。次のサンプルプログラムでは三項演算子のネストを使って、数値が2で割り切れるか、3で割り切れるかという複数の条件で判定しています。
以下のサンプルコードを見てみましょう。
public class JavaIfOneLine { public static void main(String[] args) { int num = 4; String result = ((num % 2) == 0) ? ((num % 3 == 0)) ? "numは2でも3でも割り切れます" : "numは2では割り切れますが3では割り切れません" : ((num % 3 == 0)) ? "numは2では割り切れませんが3では割り切れます" : "numは2でも3でも割り切れません"; System.out.println(result); } }
実行結果:
numは2では割り切れますが3では割り切れません
1つ目の条件式((num % 2) == 0)で、2で割り切れたのならの次の条件式((num % 3) == 0)に移り、3で割り切れるか判定しています。
次に条件にあった文字列を返します。1つ目の条件式((num % 2) == 0)で割り切れなかった場合は、次の行の条件式((num % 3) == 0)が判定されます。
次に条件にあった文字列を返します。このように4通りの判定結果を返すプログラムを三項演算子を使って作ることができました。ネストを使うことによって、複数の条件で分岐をさせる処理を行うことができました。
ちなみに、三項演算子を使わずif文で同じプログラムを組むと以下のようになります。
public class JavaIfOneLine { public static void main(String[] args) { int num = 4; String result; if((num % 2) == 0){ if((num % 3) == 0){ result = "numは2でも3でも割り切れます"; }else{ result = "numは2では割り切れますが3では割り切れません"; } }else{ if((num % 3) == 0){ result = "numは2で割り切れませんが3では割り切れます"; }else{ result = "numは2でも3でも割り切れません"; } } System.out.println(result); } }
if文で処理が1行の時の省略について
if文で処理が1行の場合「{ }」を省略して1行で記述することができます。
こちらで詳しく解説していますので、ぜひ参考にしてくださいね!
三項演算子の使い方まとめ
ここでは、記事内で紹介した三項演算子の基本文法と使い方をまとめています。
三項演算子の書き方:
条件式 ? trueの場合の戻り値 : falseの場合の戻り値
条件式がtrue、falseによって異なる戻り値を指定できます。
三項演算子の使い方:
public class Main { public static void main(String[] args) { String str = "abc"; String result1; result1 = (str == "abc") ? "strはabcです" : "strはabc以外です"; System.out.println(result1); } }
strはabcです
三項演算子の使い方(ネストする場合):
public class Main { public static void main(String[] args) { int num = 4; String result = ((num % 2) == 0) ? ((num % 3 == 0)) ? "numは2でも3でも割り切れます" : "numは2では割り切れますが3では割り切れません" : ((num % 3 == 0)) ? "numは2では割り切れませんが3では割り切れます" : "numは2でも3でも割り切れません"; System.out.println(result); } }
numは2では割り切れますが3では割り切れません
まとめ
いかがでしたか?
今回は三項演算子の使い方を解説しました。三項演算子はif文よりも短い行で簡潔にコードを記述できるのでぜひ覚えてくださいね。もし、三項演算子についてを忘れてしまったらこの記事を確認してください!