1.逻辑运算符
1)逻辑运算符
符号 | 作用 | 真值判断 |
&(&&) | 逻辑与 | 一假全假 |
|(||) | 逻辑或 | 一真全真 |
^ | 逻辑异或 | 相同为假,不同为真 |
! | 逻辑非 | 假变真,真变假 |
*注:&&和||在逻辑上和&和|没有区别,但过程有区别,待会下面会讲到
不明白可以去搜真值表看一下
逻辑运算符返回的也是布尔类型(false和true),举个例子吧
public class Dome {
public static void main(String[] args){
int i=10;
int j=9;
//i>j为真,i<j为假
System.out.println((i>j)&(i<j));
System.out.println((i>j)|(i<j));
System.out.println((i>j)^(i<j));
System.out.println(!(i>j));
}
}
false
true
true
false
2)短路逻辑运算符
短路与 | && |
短路或 | || |
那么短路逻辑运算符和上面的有什么区别呢,我们看一段代码
public class Dome {
public static void main(String[] args){
int i=10;
int j=9;
System.out.println((i++<20)||(j++<20));
System.out.println("i="+i);
System.out.println("j="+j);
}
}
true
i=11
j=9
public class Dome {
public static void main(String[] args){
int i=10;
int j=9;
System.out.println((i++<20)|(j++<20));
System.out.println("i="+i);
System.out.println("j="+j);
}
}
true
i=11
j=10
可以发现两段代码的真值的结果一致,但j的值不一样,短路或不没有执行j++的操作,因为根据逻辑或”一真全真“的判断方式,当 i++<20 已经为真就不需要对后面的进行判断了,所以短路或就跳过了后面的判断。但是 ‘|’ 会执行所有的运算。
如果有疑问或是我写的有问题,欢迎大家留言!!!