运算符
1.算术运算符
+ 加
- 减
* 乘
/ 除
% 余
int a=1;
int b=2;
System.out.println(a+b);// 3
System.out.println(a-b);// -1
System.out.println(a/b);// 0
System.out.println(a%b);// 1
注意!!!
- 0不能当除数,否则编译报错
- % 表示取余, 不仅仅可以对 int 求模, 也能对 double 来求模
System.out.println(9.5 % 3.0);
// 运行结果 0.5
2.增量赋值运算符
+= 加后赋值
-= 减后赋值
*= 乘后赋值
/= 除后赋值
%= 取模后赋值
a+=3 //a=a+3
a-=3 //a=a-3
a*=3 //a=a*3
a/=3 //a=a/3
a%=3 //a=a%3
3.自增/自减运算符
++
- -
int a = 10;
int b = ++a;
System.out.println(b);//11
System.out.println(a);//11
int a = 10;
int c = a++;
System.out.println(c);//10
System.out.println(a);//11
取表达式的返回值, 则前置自增的返回值是自增之后的值, 后置自增的返回值是自增之前的值.
4.关系运算符
==
!=
<
>
<=
>=
关系运算符的表达式返回值都是 boolean 类型
int a = 10;
int b = 20;
System.out.println(a == b);//false
System.out.println(a != b);//true
System.out.println(a < b);//true
System.out.println(a > b);//false
System.out.println(a <= b);//true
System.out.println(a >= b);//false
5.逻辑运算符
&& 逻辑与
| | 逻辑或
! 逻辑非
对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式
对于 ||, 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.
6.四位运算符
& 按位与
| 按位或
~ 按位异或
^ 按位取反
*位操作表示按二进制位运算. *
对于 按位与 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
对于 按位或 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
对于 按位异或 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.
对于 按位取反 如果该位为 0 则转为 1, 如果该位为 1 则转为 0
7.移位运算符
<< 左移
>> 右移
>>> 无符号右移
左移最左侧位不要了, 最右侧补 0.
右移 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
无符号右移 最右侧位不要了, 最左侧补 0.
PS:由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替
<< 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方
>> 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方
7.条件运算符
表达式1 ? 表达式2 : 表达式3
当表达式1的值为 true 时, 整个表达式的值为表达式2的值;当表达式1的值为false时, 整个表达式的值为表达式3的值
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
System.out.println(max);//20