Java 条件运算符与运算符优先级

条件运算符

条件运算符格式:

(条件表达式)? 表达式1:表达式2

说明:条件表达式是boolean类型的结果,根据boolean的值选择表达式1或表达式

如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型

        int i = (1 == 2 ? 100 : 200);
        System.out.println(i);//200

        boolean mariied = false;
        System.out.println((mariied ? "已婚" : "未婚")); //未婚

        double d1 = (1 > 2) ? 1 : 2.01;
        System.out.println(d1);//2.01
        ;
        int num = 21;
        System.out.println(num > 0 ? true : num + "  不是正数");//   true

 练习1、获取两个数中的较大值

        //获取两个数的最大值
        int m1 = 10;
        int m2 = 11;
        int m3 = 15;

        int max = m1 > m2 ? m1 : m2;
        System.out.println(m1 + " 和 " + m2 + " 中的最大值是 " + max);

        //求三个数中的最小是
        int tempMin = m1 < m2 ? m1 : m2;
        int min = tempMin < m3 ? tempMin : m3;
        System.out.println("三个数中最小值是 " + min);

        //今天是周四,8 天后是周几?
        int week = 4;
        week += 8;
        week %= 7;
        System.out.println("今天周二,8天后是 " + ((week == 0) ? "日" : week));

与if-else的转换关系

凡是可以使用条件运算符的地方,都可以改写为if-else结构。反之,不成立。

开发中,如果既可以使用条件运算符,又可以使用if-else,推荐使用条件运算符。因为执行效率稍高。

//if-else实现获取两个数的较大值

int i1 = 10;
int i2 = 20;

int max;//声明变量max,用于记录i1和i2的较大值

if(i1 > i2){
    max = i1;
}else{
    max = i2;
}

 

运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序。上一行中的运算符总是优先于下一行的。 

优先级

运算符说明

Java运算符

1

括号

()、[]、{}

2

正负号

+、-

3

单元运算符

++、--、~、!

4

乘法、除法、求余

*、/、%

5

加法、减法

+、-

6

移位运算符

<<、>>、>>>

7

关系运算符

<、<=、>=、>、instanceof

8

等价运算符

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

条件与

&&

13

条件或

||

14

三元运算符

? :

15

赋值运算符

=、+=、-=、*=、/=、%=

16

位赋值运算符

&=、|=、<<=、>>=、>>>=

开发建议:

  1. 不要过多的依赖运算的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用()来控制表达式的执行顺序。
  2. 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成。例如:  (num1 + num2) * 2 > num3 && num2 > num3 ? num3 : num1 + num2;
posted @ 2023-03-09 21:50  晓枫的春天  阅读(130)  评论(0编辑  收藏  举报