黄阶低级 - 《 Java 核心》- 3.5 运算符 - 修改0次
2016-08-12 16:37
246 查看
1、自增自减运算符
有两种形式,前缀和后缀,前缀先进行加1运算,后缀使用变量原来的值。int m = 7; int n = 7; int a = 2 * ++m;// now a is 16, m is 8 int b = 2 * n++;// now b is 14, n is 8
2、关系和 boolean 运算符
常见的判断相等和不等的运算符。&& 和 || 是按照“短路”方式求值的。
System.out.print(2 < 0 && (3 / 0 > 0));// 输出false,不会报错 System.out.print(2 > 0 || (3 / 0 > 0));// 输出true,不会报错
3、位运算符
Java 位运算是针对整型数据类型的二进制进行的移位运算& 和 | 运算符不按“短路”方式计算。
System.out.print(2 > 0 & (3 / 0 > 0));// 整数除以0异常 System.out.print(2 > 0 | (3 / 0 > 0));// 假设能运行到这一行,也是整数除以0异常
有符号左移<<【若正数,高位补0,负数,高位补1】
-4<<2
1111 1111 1111 1111 1111 1111 1111 1100 原码
1111 1111 1111 1111 1111 1111 1111 0000 左移,最右边空出两位补0
0000 0000 0000 0000 0000 0000 0000 1111 解码
0000 0000 0000 0000 0000 0000 0001 0000 补码
结果:-16
有符号右移(扩展符号位)>>【若正数,高位补0,负数,高位补1】
-4>>2
1111 1111 1111 1111 1111 1111 1111 1100 原码
1111 1111 1111 1111 1111 1111 1111 1111 右移,最左边空出两位按规则负数空位补1
0000 0000 0000 0000 0000 0000 0000 0000 解码
0000 0000 0000 0000 0000 0000 0000 0001 补码(补码即最后一位+1)
结果:-1
无符号右移(逻辑右移)>>>【不论正负,高位均补0】
-4>>>2
1111 1111 1111 1111 1111 1111 1111 1100 原码
0011 1111 1111 1111 1111 1111 1111 1111 右移(由于高位均补0,故>>>后的结果一定是正数)
结果:1073741823
位移数超过表示范围时, byte、char 和 short 扩充到32位取模, int 类型32位取模,long类型64位取模。所以 4>>32 和 4>>0 是等价的。
int m = -9; int n = 6; System.out.println(~n + 1);// 求相反数 System.out.println(n & 1);// 等价于a%2,判断奇偶 System.out.println((m & n) + ((m ^ n) >> 1));// 求平均数,不会溢出,但不能求浮点 System.out.println(n + (m - n) / 2.0);// 求平均数,不会溢出,可以求浮点
相关文章推荐
- 黄阶低级 - 《 Java 核心》- 3.5 运算符(二)- 修改0次
- 黄阶低级 - 《 Java 核心》- 4.8 类路径 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.1 第一个java程序 - 修改0次
- 黄阶低级 - 《 Java 核心》- 5.1 类、超类和子类(二) - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.4 静态域和静态方法 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.3 用户自定义类 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.2 注释 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.7 输入输出 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.6 字符串 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.5 方法参数 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.0 对象和类 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.9 大数值 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.7 包 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.2 使用预定义类 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.1 对象和类 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.8 控制流程 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.10 数组 - 修改0次
- 黄阶低级 - 《 Java 核心》- 4.6 对象构造 - 修改0次
- 黄阶低级 - 《 Java 核心》- 5.2 Object 类,所有的类的超类 - 修改0次
- 黄阶低级 - 《 Java 核心》- 3.4 变量 - 修改0次