条件分岐 (? : )
「?: 文」は条件分岐処理の1つで、条件が真か偽により処理を分岐します。
「if文」を短縮して書いたような記述方法になります。
基本構文
条件式 ? 真の場合の文 : 偽の場合の文
「if(条件式) 真の場合の文 else 偽の場合の文」を短縮したような構文になっています。
注意点としては条件の分岐結果が変数やリテラルなどの値になっていなければならないことです。よく代入演算子と一緒に利用します。
サンプル
public class sample01 {
public static void main(String[] args) {
char variable;
boolean result = true;
if(result){
variable = '真';
}else{
variable = '偽';
}
System.out.print(variable);
}
}
真
まずはif文です。変数resultの結果により変数variableに「真」という文字を代入するか「偽」という文字を代入するか分岐します。そして10行目で変数variableの値を表示しています。
この処理を 「? : 」文で書いてみます。
public class sample01 {
public static void main(String[] args) {
char variable;
boolean result = true;
variable = (result)? '真' : '偽';
System.out.print(variable);
}
}
真
5行目が「?:」文です。変数resultの結果により真ならば文字「真」を、 偽ならば文字「偽」を変数variableに代入しています。
public class sample01 {
public static void main(String[] args) {
char variable;
int result = 60;
variable = (result >= 80) //if (result >= 80)
? 'A'
: (result >= 30) //else if (result >= 30)
? 'B'
: 'C'; //else
System.out.print(variable);
}
}
B
「if - else if - else」文のような書き方もできます。
「 条件式? 」 が「 if (条件式) 」に、「 : 」が「else 」に対応しています。
この記述方法に慣れればコードが短くなりますし、場合によってはコードが見やすくなります。

