时间:2022-07-23 10:00:05 | 栏目:JAVA代码 | 点击:次
+ - * / %
例如:
System.out.println(11.5 % 2);
结果为:
+= -= *= /= %=
这些运算符有一个特点:自动进行类型的转换。
例如:
short a = 1; a += 2; System.out.println(a);
这段代码运行之后不会报错。虽然short是短整型,进行加法运算时需要整型提升。但+=已经自动将其提升。
++ --
例如:
int a = 1; int b = a++; int c = ++a; System.out.println(b); System.out.println(c);
结果为:
== != < > <= >=
例如:
int a = 10; int b = 20; System.out.println(a > b);
&& || !
逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean类型。
表达式1 && 表达式2
例如:
int a = 10; int b = 20; boolean c = (a > b) && (++a > 0); System.out.println(a);
此时,a的值仍为10。
表达式1 || 表达式2
例如:
int a = 10; int b = 20; boolean c = (a < b) || (++a > 0); System.out.println(a);
此时,a的值为10。
!表达式
表达式只能为布尔类型
& | ~ ^
位操作表示按二进制位运算。
如果两个对应二进制位都是 1, 则结果为 1, 否则结果为 0
例如:
int a = 10; int b = 20; System.out.println(a & b);
结果为:
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1。
例如:
int a = 10; int b = 20; System.out.println(a | b);
结果为:
如果二进制位为0,则转为1;如果该位为1,则转为0。
例如:
如果两个数字的二进制位相同, 则结果为0, 相异则结果为1。
例如:
int a = 10; int b = 13; System.out.println(a ^ b);
结果为:
<< >> >>>
<<:左边丢弃,右边补0
例如:
int a = 10; int b = a << 1; System.out.println(b);
结果为:
>>:右边丢弃,左边补符号位(正数补0,负数补1)
例如:
int a = 10; int b = a >> 1; System.out.println(b);
结果为:
>>>:右边丢弃,左边补0
方法同上。
注意:
左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
移动负数位或者移位位数过大都没有意义
表达式1 ? 表达式2 : 表达式3
当表达式1为true时,整个表达式的结果为表达式2的结果;当表达式1为false时,整个表达式的结果为表达式3的结果。
例如:
int a = 10; int b = 20; int c = a > b ? a : b; System.out.println(c);
结果为: