一:基本语法
**条件表达式﹖表达式1:表达式2;**
运算规则:
1:如果条件表达式为true,运算后的结果是表达式
2:如果条件表达式为false,运算后的结果是表达式2;
二:案例演示
public class TernaryOperator {
//编写一个 main 方法
public static void main(String[] args) {
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);
}
}
三:使用细节
- 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
三元运算符可以转成 if—else 语句
//三元运算符细节
public class TernaryOperatorDetail {
//编写一个 main 方法
public static void main(String[] args) {
//表达式 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
}
}
四:练习
案例:实现三个数的最大值
```java public class TernaryOperatorExercise {public static void main(String[] args){
int n1 = 553;
int n2 = 44;
int n3 = 123;
//第一种方法
int max1 = n1 > n2 ? n1 : n2;
int max2 = max1 > n3 ? max1 : n3;
System.out.println("最大数=" + max2)
//第二种方法
int max = (n1 > n2 ? n1 : n2) > n3 ?
(n1 > n2 ? n1 : n2) : n3;
System.out.println("最大数=" + max)
}
五:运算优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。上一行运算符总优先于下一行。
- 只有单目运算符、赋值运算符是从右向左运算的。