2019/02/06
sponsored link
三項演算子とは
if文を省略した書き方ができる三項演算子というのがあります。
条件式 ? 値1 : 値2;
このように、「?」と「:」を使って書くことで、まず条件式を評価して、trueならば値1を返し、falseならば値2を返します。
条件式はもちろん、trueかfalseを返す式じゃないと駄目です。
条件によって代入する値を変えたい場合などに、この書き方が非常に役に立ちます。
三項演算子の使い方
簡単な例を出しますので、普通にif文を使った書き方と、三項演算子を使った書き方を比べてみて下さい。
if文
int num = 5; String result = ""; if(num > 10){ result = "numは10より大きいです"; }else{ result = "numは10以下です"; }
numが10より大きければ、変数resultに”numは10より大きいです”を代入し、numが10以下であれば”numは10以下です”を代入しています。
三項演算子
int num = 5; String result = (num > 10)? "numは10より大きいです" : "numは10以下です";
上のif文と全く同じことをしています。
上記のように、三項演算子の場合も、条件式は( )でくくった方が見やすくていいです。無くても問題はありません。
三項演算子に慣れていない人は、if文の方が読みやすく感じるかも知れませんが、慣れると三項演算子の方がスッキリしていて読みやすいと思います。というか三項演算子は書くのが楽ちんです。
例のように、条件によって代入する値を変えるという処理は、結構よくあることだと思うので、覚えておくと楽できます。
三項演算子は値を返す
三項演算子というのは、値を返すためのものです。
(num > 10)? "numは10より大きいです" : "numは10以下です"
こう書くことで、”numは10より大きいです”という文字列か、”numは10以下です”という文字列のうちどちらかを返すわけです(どちらを返すかは条件式によります)。その返ってきた値を変数に代入するというのが主な使い方です。
「返す」とか「評価する」とかっていう感覚がよく分からない人は、演算子って何?をよく読んで下さい。プログラミングの基本中の基本部分です。
なので、以下のような書き方はできません。
(num > 10)? System.out.println("numは10より大きいです") : System.out.println("numは10以下です");
上記のようにその返ってきた値を宙ぶらりんにしていては、どこに代入するんだ?ってことでコンパイルが通りません。printlnメソッドは戻り値がない(void)ので、宙ぶらりんも何も値がないので代入のしようがないですが。
単に条件によって、行う処理を分けたい場合は三項演算子は使えませんので、普通にif文を使いましょう。
三項演算子はあくまで値を返す為のものです。
ただし要は値を返しているだけなので、やろうと思えばメソッドの引数に入れることも出来ます。
System.out.println( (num > 10)? "numは10より大きいです" : "numは10以下です" );
if文の条件式に入れることも出来ます(こんなことしても意味ないですが笑)。
if( (num > 10)? true:false ){
}
ちょっと後半は話がややこしかったかも知れませんが、要は条件によって代入する値を変えたい時は三項演算子を使うと便利ですよ。というお話でした。
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス