一:基本语法

**条件表达式﹖表达式1:表达式2;**
运算规则:
1:如果条件表达式为true,运算后的结果是表达式
2:如果条件表达式为false,运算后的结果是表达式2;

二:案例演示

  1. public class TernaryOperator {
  2. //编写一个 main 方法
  3. public static void main(String[] args) {
  4. int a = 10;
  5. int b = 99;
  6. // 解读
  7. // 1. a > b 为 false
  8. // 2. 返回 b--, 先返回 b 的值,然后在 b-1
  9. // 3. 返回的结果是 99
  10. int result = a > b ? a++ : b--;
  11. System.out.println("result=" + result);
  12. System.out.println("a=" + a);
  13. System.out.println("b=" + b);
  14. }
  15. }

三:使用细节

  • 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
  • 三元运算符可以转成 if—else 语句

    1. //三元运算符细节
    2. public class TernaryOperatorDetail {
    3. //编写一个 main 方法
    4. public static void main(String[] args) {
    5. //表达式 1 和表达式 2 要为可以赋给接收变量的类型
    6. //(或可以自动转换/或者强制转换)
    7. int a = 3;
    8. int b = 8;
    9. int c = a > b ? (int)1.1 : (int)3.4;//可以的
    10. double d = a > b ? a : b + 3;//可以的,满足 int -> double
    11. }
    12. }

    四:练习

    案例:实现三个数的最大值
    ```java public class TernaryOperatorExercise {

    public static void main(String[] args){

    1. int n1 = 553;
    2. int n2 = 44;
    3. int n3 = 123;
    4. //第一种方法
    5. int max1 = n1 > n2 ? n1 : n2;
    6. int max2 = max1 > n3 ? max1 : n3;
    7. System.out.println("最大数=" + max2)
    8. //第二种方法
    9. int max = (n1 > n2 ? n1 : n2) > n3 ?
    10. (n1 > n2 ? n1 : n2) : n3;
    11. System.out.println("最大数=" + max)
  1. }

} ```

五:运算优先级

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。上一行运算符总优先于下一行。
  2. 只有单目运算符、赋值运算符是从右向左运算的。
  3. image.png