上一篇重点介绍了算术运算符,自增自减和关系运算符等内容,这篇继续深入学习java的操作符知识,主要关于逻辑运算符和短路相关内容。
逻辑运算符能根据参数的逻辑关系,生成一个布尔值,true或者false。
格式 | 含义 |
---|---|
&& | AND,同时满足即为真 |
|| | OR ,一个满足条件即为真 |
! | NOT ,针对一个变量,true会变成false, false会变成true; |
举个例子。
System.out.println((1 > 2) && (2 < 3));
System.out.println((1 > 2) || (2 < 3));
System.out.println(!(1 > 2));
结果如下,可以结合表格确认一下是否正确,去理解一下。
false true true
当使用逻辑运算符时,我们会遇到一种短路现象,即一旦能够明确无误地确定整个表达式的值,就不再比较剩下部分了。 举个例子,我们来分析一下,我们建立了三个方法,每一个方法都返回true或者false。我们调用test1(0) && test2(2) && test3(2)时,判断一下是否每个test方法都会被执行。
public class Test8 {
public static void main(String[] args) {
if(test1(0) && test2(2) && test3(2))
System.out.println("expression is true");
else
System.out.println("expression is false");
}
static boolean test1(int val) {
System.out.println("test1(" + val + ")");
System.out.println("result1: " + (val < 1));
return val < 1;
}
static boolean test2(int val) {
System.out.println("test2(" + val + ")");
System.out.println("result2: " + (val < 2));
return val < 2;
}
static boolean test3(int val) {
System.out.println("test3(" + val + ")");
System.out.println("result2: " + (val < 3));
return val < 3;
}
}
结果如下,可以看到当执行test1方法,和test2方法后,我们的结果就可以确立了,所以出现了短路现象,最终我们结果中没有打印test3里面的方法,所以test3方法没有执行。
test1(0) result1: true test2(2) result2: false expression is false
以上就是就是关于java基础操作运算符中短路和逻辑运算符的相关知识,可以参考一下,后面会不断更新相关知识,大家一起进步。