算术运算符
取余运算
结果的符号和被模数的符号相同
int m1 = 12;
int n1 = 5;
System.out.println(m1 % n1) //2
int m2 = -12;
int n2 = 5;
System.out.println(m2 % n2) //-2
int m3 = 12;
int n3 = -5;
System.out.println(m3 % n3) //2
int m4 = -12;
int n4 = -5;
System.out.println(m4 % n4) //-2
++ –
不管符号在变量前还是变量后,都表示自增或自减一
前++ 先自增一,在运算
后++ 先运算,后自增一
自增自减不会改变本身的数据类型
赋值运算符
short s = 3;
s = s + 2;
s += 2;
思考一:两者有什么区别?
s = s + 2 编译不会通过
比较运算符
比较运算符的运算结果都是 Boolean 型,也就是说要么是 true ,要么是 false
逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
逻辑运算符操作的都是Boolean类型的变量
&和&&的相同点:运算结果相同
不同点:当符号左边是 false 时,&会继续执行符号右边的运损,而&&不再执行符号右边的运算
开发中,推荐使用&&
| 和 || 的相同点:运算结果相同
当符号左边是 false 时,都会执行符号右边的语句
不同点:当符号左边是 true 时,| 会执行符号右边,而||不会执行符号右边
开发中,推荐使用||
a | b | a&b | a|b | !a | a^b | a&&b | a||b |
---|---|---|---|---|---|---|---|
true | true | true | true | false | false | true | true |
true | false | false | true | false | true | false | true |
false | true | false | true | true | true | false | true |
false | false | false | false | true | false | false | false |
位运算符
操作的都是整型变量
位运算符 | |
---|---|
<< | 空位补0,被移除的高位丢弃,空缺位补0。 |
>> | 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1。 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补。 |
& | 二进制位进行&运算,只有1&1时结果是1,否则是0; |
| | 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1; |
^ | 相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1 |
~ | 正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反 |
下面举例说明位运算:
2的二进制是
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0 0 0
左移就是整体往左移,后面补零