三元运算符
1. 基本语法
- 条件表达式 ? 表达式 1: 表达式 2;
- 运算规则:
- 如果条件表达式为 true,运算后的结果是表达式 1;
- 如果条件表达式为 false,运算后的结果是表达式 2;
口诀: [一灯大师:一真大师]
2. 案例演示 TernaryOperator.java
- 分析:
b
是先赋值再自减,所以result = 99
;接着 b 再自减1
为98
int a = 10;
int b = 99;
// 解读
// 1. a > b 为 false
// 2. 返回 b--, 先返回 b的值,然后在 b-1
// 3. 返回的结果是99
int result = a > b ? a++ : b--;
System.out.println("result=" + result);
System.out.println("a=" + a);
System.out.println("b=" + b);
- 如果把上面的
b--
改为--b
,就是先自减再赋值。result = 98
,b
的结果也是 98
3. 三元运算符使用细节
- TernaryOperatorDetail.java
1) 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
//表达式1和表达式2要为可以赋给接收变量的类型
//(或可以自动转换/或者强制转换)
int a = 3;
int b = 8;
int c = a > b ? (int)1.1 : (int)3.4;//可以的
double d = a > b ? a : b + 3;//可以的,满足 int -> double
2) 三元运算符可以转成 if--else
语句
int res = a > b ? a++ : --b;
if ( a > b ) res = a++;
else res = --b;
4. 课堂练习
- 案例:实现三个数的最大值。
//案例:实现三个数的最大值
int n1 = 553;
int n2 = 33;
int n3 = 123;
//思路
//1. 先得到 n1 和 n2 中最大数 , 保存到 max1
//2. 然后再 求出 max1 和 n3中的最大数,保存到 max2
int max1 = n1 > n2 ? n1 : n2;
int max2 = max1 > n3 ? max1 : n3;
System.out.println("最大数=" + max2);
- 使用一条语句实现, 推荐使用上面方法。下面就是把上面 max1 给替换了下,结果还是一样的
int max = (n1 > n2 ? n1 : n2) > n3 ?
(n1 > n2 ? n1 : n2) : n3;
System.out.println("最大数=" + max);