一:基本语法
**条件表达式﹖表达式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. 返回的结果是 99int 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)
}
五:运算优先级
- 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。上一行运算符总优先于下一行。
- 只有单目运算符、赋值运算符是从右向左运算的。

