三元运算符
(条件表达式)?表达式1: 表达式2
说明:
①条件表达式的结果为boolean类型
②根据表达式真或假,决定执行表达式1,还是表达式2,
如果表达式为ture,则执行表达式1:
false,则为表的式2,
③表达式1 与 表达式2要求是一致的。
④三元运算符可以嵌套使用
如果程序即可使用三元也可使用if-else 优先选择三元运算符
原因:简洁、执行效率高
结论:凡是可以使用三元运算符可以改写成if-else:
能用if-else不一定能用三元运算。
例子:
//获取两个整数的较大值
int m = 12;
int n = 5;
int max=(m > n)? m : n; // 如果(m>n)是真,则把m付给max 如果(m>n)是假,则把n付给max
System,out,println(max);//输出12
double num = (m>n)?2: 1.0;//因为1.0带小数点所以要用double,
如果(m>n)? 2:"n大"//这是错误的,因为"n大"是字符串,需要用String接收。2需要用int接收。
String maxStr = (m > n)? "m大" : "n大"//
System,out,println(maxStr);//输出:m大
//获取三个数的最大值
int n1 = 12;
int n2 = 30;
int n3 = -43;
int max1 = (n1 > n2)? n1 : n2;
System,out,println(max1);//输出:30.则n2大
int max2 =(max1 > n3)?max1:n3;
System,out,println("三个数中的最大值为"max2);//输出:30.则n2大
//把三个数放在一块
int max3 =(((n1 > n2)? n1 : n2)> n3)?((n1 > n2)? n1 : n2):n3;//不建议这样写
System,out,println("三个数中的最大值为"max3);//输出:30.则n2大
//可以改写成if-else:
if (m > n){
System.out.println(m);
}else{
System.out.println(n);
}