学习日记
基本运算符
1. 理论基础
- 算数运算符: + 、 -、 * 、 / 、 %(取余、模运算) 、 ++(自增) 、 --(自减)
- 赋值运算符: =
- 关系运算符: > 、 < 、 >= 、 <= 、 == 、 != 、 instanceof
- 逻辑运算符:&&、 || 、 !
- 位运算符: & 、 | 、 ^(异或)、 ~(非、取反) 、 >>(右移)、 <<(左移) 、 >>>
- 条件运算符: ? :
- 扩展赋值运算符: += 、 -= 、 *= 、 /=
注意:
-
字符串连接符:+。
-
整数运算中,计算式有 long 类型的,最后结果为 long 类型,否则默认为 int 型(举例在后)。
-
++ 和 – 是一元运算符,? 和 : 是三元运算符,
x ? y : z
表示 x 若为 true,则 y,否则为 z。 -
幂运算等很多运算,会使用一些工具类来操作,如 Math 类。
-
位运算符中的异或(^),若相同则为0,不同则为1。
-
位运算符中的左移(<<)相当于 *2,右移(>>)相当于 /2(最后结果取整)。
-
位运算效率极高,计算 2^10,可以用
int a = 2<<9;
。int b = x<<y;
计算结果为b = x * 2^y
。 -
优先级:一般使用括号,良好的编码习惯(+ 的优先级高于 << 和 >>)。
-
位运算符的取反(~)比较特殊,计算机内部对二进制进行运算用的都是补码,按位取反是对补码进行按位取反运算,当运算完后,再将补码变回原码。
原码 | 反码 | 补码 | 按位取反(~) | 变回原码 |
---|---|---|---|---|
正数 | 和原码一样 | 和原码一样 | 变为负数 | 对补码再进行一次补码变换 |
负数 | 符号位不变,其余位取反 | 反码 + 1 | 变为正数 | 对补码再进行一次补码变换 |
原码 | 反码 | 补码 | 按位取反(~) | 变回原码 |
---|---|---|---|---|
0000 1001(9) | 0000 1001 | 0000 1001 | 1111 0110 | 1000 1010(-10) |
1000 1001(-9) | 1111 0110 | 1111 0111 | 0000 1000 | 0000 1000(8) |
注意:
① 变反码时,符号位(0正1负)不变,其余位取反;进行位运算符的取反(~)操作时,每位均取反。
② 补码变为原码,将补码再进行一次补码变换。
③ 若已知十进制数 a,求按位取反的结果 b,计算公式:b = (a+1) * (-1)。
2. 实践操作
-
算数运算符
-
自增、自减、幂运算
-
关系运算符
-
逻辑运算符和短路运算
-
位运算符
-
位运算符中的取反(~)
-
扩展赋值运算符
-
字符串连接符
-
条件运算符,必须掌握!