Java运算符优先级
【摘要】
优先级运算符结合方向描述目数1[ ]、 .、 ( )从左向右方法调用,属性获取2+(正号)、-(负号)、!、~、 ++、 --从右向左一元运算符单目3* 、/ 、%从左向右乘、除、取模(余数)运算双目4+...
| 优先级 | 运算符 | 结合方向 | 描述 | 目数 |
|---|---|---|---|---|
| 1 | [ ]、 .、 ( ) |
从左向右 | 方法调用,属性获取 | |
| 2 | +(正号)、-(负号)、!、~、 ++、 -- |
从右向左 | 一元运算符 | 单目 |
| 3 | * 、/ 、% |
从左向右 | 乘、除、取模(余数)运算 | 双目 |
| 4 | + 、 - |
从左向右 | 加、减运算 | 双目 |
| 5 | <<、 >>、 >>> |
从左向右 | 左移位运算符、带符号右移位运算符、无符号右移位运算符 | 双目 |
| 6 | < 、<= 、>、 >=、 instanceof |
从左向右 | 小于、小于等于、大于、大于等于,判断某对象类型是否属于指定的类型 | 双目 |
| 7 | == 、!= |
从左向右 | 等于、不等于 | 双目 |
| 8 | & |
从左到右 | 按位与 | 双目 |
| 9 | | |
从左到右 | 按位或 | 双目 |
| 10 | ^ |
从左到右 | 按位异或 | 双目 |
| 11 | && |
从左到右 | 短路与 | 双目 |
| 12 | || |
从左到右 | 短路或 | 双目 |
| 13 | ? : |
从右到左 | 条件运算符 | 三目 |
| 14 | =、 += 、-= 、*= 、/=、 %=、&=、 |=、 ^=、 <<= 、>>= 、>>>= |
从右向左 | 混合赋值运算符 | 双目 |
一.单目运算符号具体说明:
1.正负号

正负号可以遵循负负得正的原则,如上图可以写成+-+、-+-+-+-正负号相交的方式,不能写成+++、++或--同符号相连的方式,会报错,如下图:
两正号相连:

两负号相连:

代码示例:(偶数个负号为正)
public class DemoTest {
@Test
public void demoTest01() {
int i;
//-+-+-+-5 有四个负号,最终表示+5
i = +-+1 + -+-+-+-5;
System.out.println(i);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
输出结果:

代码示例:(奇数个负号为负)
public class DemoTest {
@Test
public void demoTest01() {
int i;
//-+-+-+5 有三个负号,最终表示-5
i = +-+1 + -+-+-+5;
System.out.println(i);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
输出结果:

2.按位非/取补运算

如上图,用二进制表示整型只写出了8位(1个字节),前面的24位(3个字节)没有写出会自动补零,也就是说11111100实际上表示00000000 00000000 00000000 11111100,按位非(或者说取补运算)后输出结果为:

二.综合举例:

上述中hasLength方法因为!=和!的运算符优先级高于&&,所以上述的hasLength等价于下述示例:

输出结果:

文章来源: blog.csdn.net,作者:Mr.Yushiwen,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/MrYushiwen/article/details/112617759
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)