【JAVA学习笔记】8-赋值运算符、三元运算符、运算符优先级

一、赋值运算符

        将运算后的值赋给指定变量,基本赋值运算符 = ,复合赋值运算符 += , -= ,*= ,/= , %=等,a += b;等价与a = a + b

其他同理。

1.运算顺序从右到左,即等号右边先计算随后赋值与左边的变量;

2.赋值运算符左边只能是变量,右边可以是变量,表达式,常量;

3.赋值运算符如a += 3;等价与 a = a + 3;

4.复合赋值运算符会进行强制类型转换

        在正常运行中,如果使用byte b; b = b + 1的话,将会报错,即精度高的无法自动转换到精度低的数值上,而使用复合赋值运算符会进行强制转换,即byte b; b += 1;

等价于 b = (byte)b + 1;

二、三元运算符

        基本语法,条件表达式?表达式1:表达式2;

运算规则:1.如果表达式为true,运算后结果返回表达式1;

                  2.如果表达式为false,运算后结果返回表达式2;

        示例        int a = 10;

                        int b = 99;

                        int result = a > b ? a++ : b--

                                

        分析:因为条件判断为false,所以执行第二表达式,又因为是后--,所以先赋值到result,后自增

          如果改为 int result = a < b ? a++ : b-- ;

                ​​​​​​​        

        因为条件为true,输出第一表达式,先赋值,后自增。

1.表达式1和2要为可以赋值给接受变量的类型(或可以自动转换的类型)

                        double a = 10.0;
                        int b = 99;
                        int result = a < b ? a++ : b-- ;  

                即double无法赋值给int,使用强转或者改变变量类型。

2.三元运算符可以转换为if--else语句(本质)

                        int result = a < b ? a++ : b-- ;

        可以转换为 if(a>b) result = a++;else result = b--;

3.三元运算符练习

        实现三个数的最大值,思路两个条件表达式,分别比较

                                int a = 10;
                                int b = 10;
                                int c = 100;
                                int max = a > b ? a : b ;
                                int max1 = c > max ? c : max;

        也可以使用一条语句实现,但是不清晰,所以就这样就好

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​

三、运算优先级

                【JAVA学习笔记】8-赋值运算符、三元运算符、运算符优先级_第1张图片

1.运算符有不同的优先级,在上面的优先级高。

2.只有单目运算(目标变量只针对一个)和赋值运算是从右向左运算的。

        1);(){} ,

        2)++ -- ~ !

        3)算术运算符

        4)位移运算符

        5)比较运算符

        6)逻辑运算符

        7)三元运算符

        8)赋值运算符(优先级最低)

你可能感兴趣的:(学习,笔记)