1. 三元运算符ternary operators
1.1 运算规则:
条件表达式 ? 表达式 1: 表达式 2;
- 如果条件表达式为 true,运算后的结果是表达式 1;
- 如果条件表达式为 false,运算后的结果是表达式 2;
- 口诀: [一真大师]如果为真,返回1。
1.2 案例演示
public class var01 {
//编写一个main方法
public static void main(String[] args) {
//例1
int a = 10;
int b = 99;
//解读思路:a>b为假
//返回b--:先返回b,再对b做--
//返回b(99)。同时b改变=98.
int result = a > b ? a++ : b--;
//例2
int a = 10;
int b = 99;
int result = a < b ? a++ : b--;
System.out.println("result=" + result); // 10
System.out.println("a=" + a); //11
System.out.println("b=" + b); //99
}
}
}
1.3 使用细节
- 表达式1和表达式2数据类型必须是可赋给接收变量的类型(或可以自动转换)
- 三元运算符可以转成if–else语句
- 演示:
public class turnary {
//编写一个main方法
public static void main(String[] args) {
//细节演示
int a = 3;
int b = 8;
int c = a > b ? a : b;//可以通过
int d = a > b ? 1.1 : 1.3; //不通过,不能把1.1double赋值给d int。
int d = a > b ? (int)1.1 : (int)1.3;//可以
double d = a > b ? a : b + 3;//可以的,满足 int->double
}
}
}
1.4 练习
public class TernaryOperatorExercise {
//编写一个 main 方法
public static void main(String[] args) {
//案例:求三个数的最大值
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); //输出553
//使用一条语句实现, 推荐使用上面方法
//老师提示: 后面我们可以使用更好方法,比如排序
//int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3;
//System.out.println("最大数=" + max);
}
}