java有算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符。
在这里主要介绍逻辑运算符。
逻辑运算符主要有3个: && || !
需要注意的是:逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是boolean。
逻辑与&&
规则:两个操作数都为true,结果才为true,否则为false 。
//比如下面代码:结果为true
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
}
逻辑或||
规则:两个操作数都为false,结果才为false,否则结果为true
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println(a > b || b > c); //由于操作数都为false,所以结果为false
}
逻辑非!
规则:操作数为true,结果为false,操作数为false,结果为true()这个是单目运算符,只有一个操作数
&和 | (不推荐使用)
&和 | 如果操作数为boolean时,也表示逻辑运算,但是核&&以及||相比,它们不支持短路求值。
System.out.println(10>20 & 10/0 == 0); //程序抛出异常
System.out.println(10<20 | 10/0 == 0); //程序抛出异常
短路求值
&&和||遵守短路求值的规则。
System.out.println(10>20 && 10/0 == 0); //打印false
System.out.println(10<20 || 10/0 == 0); //打印true
我们都知道,除数不可以为0,计算10/0会导致程序抛出异常,但是上面代码都可以运行,说明10/0这个表达式并没有执行,原因如下:
- 对于&&,如果左侧表达式值为false,则表达式整体的值一定是false,无需再计算右侧表达式。
- 对于||, 如果左侧表达式值为true,则表达式整体的值一定是true,无需再计算右侧表达式。