结合实例谈Java操作符的优先级和结合性
2009-03-03 11:12
246 查看
首先把 Java操作符的优先级和结合性 贴在这,
Java操作符的优先级和结合性
然后看下边题目:
可以得出很多种答案的,那时候我一连做了几次都没有得出最终的正确答案,你可以试试看
然后,我们解析一下,要知道的 ++优先级是2 右结合, * / %是一个级别上的, 优先级是3 左结合的, 还要知道 ++(后自增)是先运算后增加的,前自增是先增加后运算的,好的,那么我们的答案就应该是6, 首先 计算a++ 此时a的值仍为8,然后计算 ++b 此时b的值为5,再计算 8%5 结果3,最后3*2=6,下边再引用a的话 a的值就为9了,因为运算完了要增加的嘛, b的值为5,
这个题目容易,知道 + 的优先级比 <<的优先级高(呵呵 有点不可思议吧 但是事实如此),就知道答案 32。
接下来的这个:
在这里要 说明一个int转byte的小规律:
int a----->byte b (b = (byte)a);
a为正数:b = a - 256 ,如果b > 127 继续b = b - 256,直至 范围落在 -128 --127,
a为负数:b = a + 256 ,如果b < -128 继续b = b + 256,直至 范围落在 -128 -- 127。
还要知道 byte short char 作为操作数参与运算时候 系统都会先把他们转成int数值来参与运算。
(byte)255 为 -1, -1 转为int 1111 1111 1111 1111 ,和 0xff(0000 0000 1111 1111)相与,结果 -1 + 256 = 255。
Java操作符的优先级和结合性
优先级 | 结合性 | |
1 | [ ] . ( ) (函数呼叫) | 从左到右 |
2 | ! ~ ++ -- +(单操作数) –(单操作数) ( ) (类型转化) new | 从右到左 |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | << >> >>> | 从左到右 |
6 | < <= > >= instanceof | 从左到右 |
7 | == != | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ? : | 从右到左 |
14 | = += -= *= /= %= ^= <<= >>= >>>= | 从右到左 |
int aa = 8,b = 4; int expr = aa++%++b*2;
可以得出很多种答案的,那时候我一连做了几次都没有得出最终的正确答案,你可以试试看
然后,我们解析一下,要知道的 ++优先级是2 右结合, * / %是一个级别上的, 优先级是3 左结合的, 还要知道 ++(后自增)是先运算后增加的,前自增是先增加后运算的,好的,那么我们的答案就应该是6, 首先 计算a++ 此时a的值仍为8,然后计算 ++b 此时b的值为5,再计算 8%5 结果3,最后3*2=6,下边再引用a的话 a的值就为9了,因为运算完了要增加的嘛, b的值为5,
int expr = 4 << 2 + 1;
这个题目容易,知道 + 的优先级比 <<的优先级高(呵呵 有点不可思议吧 但是事实如此),就知道答案 32。
接下来的这个:
int a = 255; int expr = (byte)a + (((byte)a) & 0xff);
在这里要 说明一个int转byte的小规律:
int a----->byte b (b = (byte)a);
a为正数:b = a - 256 ,如果b > 127 继续b = b - 256,直至 范围落在 -128 --127,
a为负数:b = a + 256 ,如果b < -128 继续b = b + 256,直至 范围落在 -128 -- 127。
还要知道 byte short char 作为操作数参与运算时候 系统都会先把他们转成int数值来参与运算。
(byte)255 为 -1, -1 转为int 1111 1111 1111 1111 ,和 0xff(0000 0000 1111 1111)相与,结果 -1 + 256 = 255。
相关文章推荐
- 结合实例谈Java操作符的优先级和结合性
- Java操作符的优先级(从大到小)和结合性
- Java操作符的优先级和结合性
- Java操作符的优先级和结合性
- Spring结合java Quartz配置实例代码
- C++ 浅谈操作符的优先级和结合顺序
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- RabbitMQ与java、Spring结合实例详细讲解
- Spring结合java Quartz配置实例代码详解
- RabbitMQ与java、Spring结合实例详细讲解
- Java基本语法-----java运算符的优先级与结合性
- Java 多线程优先级实例详解
- c语言运算符优先级,结合性(左/右结合详解)
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- RabbitMQ与java、Spring结合实例详细讲解
- C语言运算符的优先级和结合性实例详解
- java运算符的结合性和优先级
- RabbitMQ与java、Spring结合实例详细讲解
- RabbitMQ与java、Spring结合实例详细讲解
- Java基本语法-----java运算符的优先级与结合性