条件分岐といえば、if文です。
でも、もっと短く書くこともできるんです。
ただし、あまり乱発すると見づらくなるので、簡単な分岐に使うぐらいに留めておきましょう。
三項演算子を使って空文字列をチェックするサンプル
空文字列をチェックするサンプルです。
if文を使ったチェック、三項演算子を使ったチェックの例です。
当然、同じ答え(true / false)を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class ConditionalOperatorTest { private static boolean isEmpty1(String str) { if(str == null || str.length() == 0) { return true; }else { return false; } } private static boolean isEmpty2(String str) { return (str == null || str.length() == 0) ? true : false; } public static void main(String[] args) { //if文で空文字列をチェック System.out.println("-- if文で空文字列をチェック --"); System.out.println("空文字列:" + isEmpty1("")); System.out.println("hoge" + ":" + isEmpty1("hoge")); //三項演算子で空文字列をチェック System.out.println("-- 三項演算子で空文字列をチェック --"); System.out.println("空文字列:" + isEmpty2("")); System.out.println("hoge" + ":" + isEmpty2("hoge")); } } |
実行結果
1 2 3 4 5 6 | -- if文で空文字列をチェック -- 空文字列:true hoge:false -- 三項演算子で空文字列をチェック -- 空文字列:true hoge:false |
解説
三項演算子は、次のように書きます。
1 | 条件式 ? 条件式が真(true)のときに返却する値(または式) : 条件式が偽(false)のときに返却する値(または式); |
上記サンプル(ConditionalOperatorTest#isEmpty2(String))では、条件式の真偽値そのままを返したいだけなので、「true : false」になります。
ちなみに、三項演算子は、条件演算子とも言います。
書くときの注意
さきほど既に書いた内容ではありますが、「三項演算子の三項演算子の三項演算子・・・」のようにネストして、いくらでも書くことはできます。
・・・が、後で見たときにさっぱりわからなくなりますので、1行でさらっと書きたい時だけに留めましょう。
たとえ、自分にわかっても、他人には読みづらいので。
おまけ
上記サンプルは、条件式の真偽値を単に返すだけなので、そもそもこんな風にもっと手抜きで書けますw
1 2 3 4 5 6 7 8 9 10 11 12 | public class ConditionalOperatorTest { private static boolean isEmpty3(String str) { return (str == null || str.length() == 0); } public static void main(String[] args) { //もっと手抜きで空文字列をチェック System.out.println("-- もっと手抜きで空文字列をチェック --"); System.out.println("空文字列:" + isEmpty3("")); System.out.println("hoge" + ":" + isEmpty3("hoge")); } } |