一篇文章带你入门java运算符
作者:rampant boy
算术运算符
基本四则运算符
+ - * / %
- 对于/:int/int结果还是int,需要使用double。此外,0不能做除数。
- 对于%:表示取余,不仅可以对int取余,也可以对double取余。
例如:
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);
结果为:
关系运算符
== != < > <= >=
- 关系运算符的表达式返回值都是 boolean 类型。
例如:
int a = 10; int b = 20; System.out.println(a > b);
逻辑运算符
&& || !
逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean类型。
&&
表达式1 && 表达式2
- 只有两个表达式都为真,结果才为真
- 如果表达式1为假,那么就不会执行表达式2这
- 两个表达式只能是布尔表达式
例如:
int a = 10; int b = 20; boolean c = (a > b) && (++a > 0); System.out.println(a);
此时,a的值仍为10。
||
表达式1 || 表达式2
- 只有两个表达式都是假,结果才为假
- 如果表达式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);
结果为:
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!