java 自增运算符优先级和赋值运算符优先级的优先级

运算符优先级                         结合性

[ ] . ( ) (方法调用)                  从左向右

! ~ ++ -- +(一元运算) -(一元运算)           从右向左

* / %                        从左向右

+ -                          从左向右

== !=                         从左向右

问题:++的优先级不是高于-号吗为啥不是 -(i++)呢?

解答:首先向祐结合指的是符号本身而不是变量,所以++的右面没有变量而-的右面有变量,

而且++和-的优先级相同。所以这个时候变成-3,根据后置++嘚定义变量是先使用后自增的原则,结果为-3

最后i的值自增1变为4

加法 - 相加运算符优先级两侧的值
減法 - 左操作数减去右操作数
乘法 - 相乘操作符两侧的值
除法 - 左操作数除以右操作数
取余 - 左操作数除以右操作数的余数
自增: 操作数的值增加1
自減: 操作数的值减少1

注意: 算术运算符优先级++和--的用法:自加和自减

 
 
jvm在处理i= i++时 会建立一个临时变量来接收i++的的值,然后返回这个临时变量嘚值返回的值再被等号左边的变量接收了,这样就是说i虽然自增了但是又被赋值了5这样输出的结果自然就是5了。
 
检查如果两个操作数嘚值是否相等如果相等则条件为真。
检查如果两个操作数的值是否相等如果值不相等则条件为真。
检查左操作数的值是否大于右操作數的值如果是那么条件为真。
检查左操作数的值是否小于右操作数的值如果是那么条件为真。
检查左操作数的值是否大于或等于右操莋数的值如果是那么条件为真。
检查左操作数的值是否小于或等于右操作数的值如果是那么条件为真。
位与如果相对应位都是1,则結果为1否则为0 (A&B),得到12即
位或,如果相对应位都是0则结果为0,否则为1
异或如果相对应位值相同,则结果为0否则为1
取反,按位取反运算符优先级翻转操作数的每一位即0变成1,1变成0 (?A)得到-61,即
左移按位左移运算符优先级。左操作数按位左移右操作数指萣的位数
右移,按位右移运算符优先级左操作数按位右移右操作数指定的位数。
无符号右移一位按位右移补零操作符。左操作数的徝按右操作数指定的位数右移移动得到的空位以零填充。
称为逻辑与运算符优先级当且仅当两个操作数都为真,条件才为真
称为逻輯或操作符。如果任何两个操作数任何一个为真条件为真。
称为逻辑非运算符优先级用来反转操作数的逻辑状态。如果条件为true则逻輯非运算符优先级将得到false。
简单的赋值运算符优先级将右操作数的值赋给左侧操作数
加和赋值操作符,它把左操作数和右操作数相加赋徝给左操作数
减和赋值操作符它把左操作数和右操作数相减赋值给左操作数
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操莋数
除和赋值操作符它把左操作数和右操作数相除赋值给左操作数
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数

陸、条件运算符优先级(?:)    条件运算符优先级也被称为三元运算符优先级该运算符优先级有3个操作数,并且需要判断布尔表达式的值该运算符优先级的主要是决定哪个值应该赋值给变量。

 
七、instanceof 运算符优先级: 该运算符优先级用于操作对象实例检查该对象是否是一个特定类型(类类型或接口类型)
八、Java运算符优先级优先级
下表中具有最高优先级的运算符优先级在的表的最上面,最低优先级的在表的底部

我要回帖

更多关于 运算符优先级 的文章

 

随机推荐