一、三元运算符语法和规则
基本语法
条件表达式 ? 表达式1 : 表达式2;
运算规则
- 如果条件表达式为true, 运算后的结果是表达式1;
- 如果条件表达式为false, 运算后的结果是表达式2;
[口诀: 一真大师]
三、案例演示
public class TernaryOperator{
public static void main(String[] args) {
int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
// result = 99
//原因: b-- [后自减]是先赋值,后运算,所以表达式会先把b的值 99赋值给变量result,然后再自增也就是b= b - 1 = 98
System.out.println(result); // result = 99
System.out.println(b); // b = 98
}
}
四、三元运算符细节
- 表达式1和表达式2一定要是可以赋给接受变量的类型(或可以自动转换的类型)
public class TernaryOperator{ public static void main(String[] args) { // 表达式1和表达式2一定要是可以赋给接受变量的类型(或可以自动转换的类型) int a = 3; int b = 8; // 可以☑️ 表达式中的a 和 b 类型都是和接受变量的c的类型是匹配的,因此编译一定通过 int c = a > b ? a : b; //错❌. 表达式1和表达式2 类型都是double型,而接受变量的c是int型,所以类型不兼容 int c = a > b ? 1.1 : 3.4‘ // int c = a > b ? (int)1.1 : (int)3.4; } }
- 三元运算符等价于 if — else 语句
public class TernaryOperator{ public static void main(String[] args) { //三元运算符等价于 if -- else语句 //这个三元运算等价于下面的if -- else 语句 int res = a > b ? a++ : --b; //if -- else 语句 if (a > b) { System.out.println(a++); } else { System.out.println(--b); } } }
五、三元运算符练习
实现三个数的最大值
public class TernaryOperator{
public static void main(String[] args) {
//求三个数的最大值
//思路 :
//1、先求出其中两个数n1、n2的最大数,并赋值给max1
//2、用求出的最大数max和第三个数n3进行比较,并赋值给max2
int n1 = 553;
int n2 = 33;
int n3 = 123;
int max1 = n1 > n2 ? n1 : n2;
int max2 = max1 > n3 ? max1 : n3;
System.out.println("三个数的最大数为:" + max2);
}
}