一、算术运算符
+ - * / % (前)++ (后)++ (前)-- (后)--
二、赋值运算符
= += -= *= /= %=
int num = 10;
num += 3;
//int num = num +3;
运算的结果不会改变变量本身的数据类型
eg:
int i = 1;
i *= 0.1;
system.out.println(i)//0
//编译运行通过,但不会改变变量本身的数据类型
三、比较运算符(关系运算符)
== != > < >= <= instanceof
1.比较运算符的结果都是Boolean类型的
2.> < >= <= :只能使用在数值类型的数据之间。
3. == != :不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
四、逻辑运算符
& && | || ! ^
&和&&的异同
1.相同点:
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),一方为false,结果为false
2.不同点:
&&:具有短路的功能,即如果第一个表达式为false,则不执行第二个表达式
&:如果第一个表达式为false,还会执行第二个表达式
eg:
if(str != null && str.equals(""))
//当str为null时,后面的表达式不执行,运行正常
//如果将&&改为&,后面的表达式会执行,则会报 NullPointerException 异常
开发中一般使用 &&
逻辑运算符操作的都是boolean类型的变量。而且结果也是Boolean类型
五、位运算符
<< >> >>> & | ^ ~
|<< :在一定范围内,每向左移一位,相当于*2
|
|>> :在一定范围内,每向右移一位,相当于/2
【面试题】 你能否写出最高效的2*8的实现方式?
答案:2<<3 、 8<<1
六、三元运算符
(条件表达式)?表达式1:表达式2
根据条件表达式的结果 true 或 false,来决定执行表达式1还是表达式2
true:执行表达式1
false:执行表达式2