返回 Java编程练习目录
条件运算符是Java中唯一的三元运算符(ternary operator),它可以替代简单的if-else语句。
b-e ? exp1:exp2;
1.求值顺序
计算?左边的布尔表达式b-e的值,如果是true,求分号前的exp1的值,并以该值为整个条件表达式的值;如果是false,跳过exp1,求exp2的值并以该值为整个条件表达式的值。
如同计算Math.min(a,b),条件运算符替代简单的if-else语句。
minVal = (a < b) ? a : b;
下面的代码,运行并能够解释答案即可。
public static void 条件表达式的求值顺序(){
int i = 0;
int k = (i = 1)<0? i+(i = 2)+i:(i = 3)+i;
System.out.println(k+" "+i); //6 3
}
2.数据类型
如果exp1和exp2具有相同的类型T,条件表达式的类型为T。
如果exp1和exp2中一个有类型T(byte、short或char),而另一个是int类型的常量表达式,其值又可以用类型T表示,则T为条件表达式的类型。
混合类型的计算,e2和e3被提升之后的类型为条件表达式的类型。
public static void 条件表达式的type(){
char x = 'X';
int i = 0;
System.out.println(true ? x : 0); //类型为char
System.out.println(true ? x : -1); //类型为int
System.out.println(false ? i : x); //类型为int
}
3.避免啰嗦
public static void coinFlip(){//抛硬币
if (Math.random() < 0.5) System.out.println("字");
else System.out.println("徽");
}
String s =(Math.random() < 0.5)?"字":"徽"; //这样较好
再例如:
String str= "Thank you " + (person.isMale() ? "Mr. " : "Ms. ") + person.getName() + "。";