1.算数运算符
①.基本四则运算符:+,-,*,/
int a=10; int b=20; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b);
都是二元运算符,使用时必须要有左右两个操作数
int / int 结果还是int类型,而且会向下取
整
在上面中除法运算比较特殊,他会舍弃小数部分,例如上面的计算结果会是0;
如果要保留小数可以用a.0/b;
2.增量运算符(+=,-=,*=,/=,%=)
a=a+3可以化简为a+=3;其他类似。
3.自增/自减运算符(++,--)
int
a
=
1
;
a
++
;
//
后置
++
表示给
a
的值加
1
,此时
a
的值为
2
System
.
out
.
println
(
a
++
);
//
注意:后置
++
是先使用变量原来值,表示式结束时给变量
+1
,因此输出
2
System
.
out
.
println
(
a
);
//
输出
3
++
a
;
//
前置
++
表示给
a
的值加
1
System
.
out
.
println
(
++
a
);
//
注意:前置
++
是先给变量
+1
,然后使用变量中的值,因此输出
5
4.关系运算符(==,!=,<,>,<=,>=)
他的计算结果是true/false,
不能连写。
5.逻辑运算符(&&,||,!)
运算结果同上述一样都是boolean类型。
逻辑与&&
逻辑或||
逻辑非!
5.1 短路求值
eg:
System.out.println(10>20&&10/0==0); System.out.println(10<20&&10/0==0);
本身10不能/0,但是对于&&来说,10>20就是错的,不会执行后面的。
对于||来说,10<20是对的,也不会执行后面的。
6.位运算符(&,|,~,^)
6.1按位与&:如果俩个数的二进制位都是1,则结果为1,否则为0.
全一为一。
6.2按位或|:如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
有一为一。
6.3按位取反~:如果该位为 0 则转为 1, 如果该位为 1 则转为 0。
int a=10;
System.out.println(~a);//结果为-11
6.4按位异或^:如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.
如果俩个数相同,结果为0;
7.移位运算符(<<,>>,>>>)
左移:最左侧位不要了, 最右侧补 0。
右移:最右侧位不要了, 最左侧补符号位(正数补0,负数补1)。
无符号右移>>>:最右侧位不要了, 最左侧补0。
注意
:
1.
左移
1
位
,
相当于原数字
* 2.
左移
N
位
,
相当于原数字
* 2
的
N
次方
.
2.
右移
1
位
,
相当于原数字
/ 2.
右移
N
位
,
相当于原数字
/ 2
的
N
次方
.
3.
由于计算机计算移位效率高于计算乘除
,
当某个代码正好乘除
2
的
N
次方的时候可以用移位运算代替
.
4.
移动负数位或者移位位数过大都没有意义
7.条件运算符:
三目运算符:
表达式
1 ?
表达式
2 :
表达式
3
当
表达式
1
的值为
true
时
,
整个表达式的值为
表达式
2
的值
;
当
表达式
1
的值为
false
时
,
整个表达式的值为
表达式
3
的值
.
eg:int a=10>20?10:20;//结果为20.
注意:
1.
表达式
2
和表达式
3
的结果要是同类型的,除非能发生类型隐式类型转换。
2.
表达式不能单独存在,其产生的结果必须要被使用。