Java 中与(&)短路与(&&)以及 或(|)短路或(||)的关系
一、逻辑运算符的使用
1)逻辑运算符的连接的是布尔表达式,要与位运算符做区分。
2)使用方法:
public class Test {
public static void main(String[] args) {
System.out.println(true & false);//结果为false
System.out.println(true & true);//结果为true
System.out.println(false & false);//结果为false
System.out.println(false & true);//结果为false
/*
System.out.println(true && false);//结果为false
System.out.println(true && true);//结果为true
System.out.println(false && false);//结果为false
System.out.println(false && true);//结果为false
*/
}
}
结论:逻辑与只有当符号两边的表达式都为true时结果才为true
==============================================================
public class Test {
public static void main(String[] args) {
System.out.println(true | false);//结果为true
System.out.println(true | true);//结果为true
System.out.println(false | false);//结果为false
System.out.println(false | true);//结果为true
/*
System.out.println(true || false);//结果为true
System.out.println(true || true);//结果为true
System.out.println(false || false);//结果为false
System.out.println(false || true);//结果为true
*/
}
}
结论:逻辑或只有当符号两边的表达式都为false时结果才为false
==============================================================
二、‘短路与’、‘短路或’
1)‘&、|’与‘&&、||’的区别
单个的逻辑运算符会将左右两个表达式都进行运算得出布尔值,再进行运算。‘短路与’若左边表达式为false则不会对右边的表达式进行判断,
因为结果必为false;‘短路或’若左边表达式结果为true则不会对右边的表达式进行判断,因为结果必为true。
短语的逻辑运算符相当于普通的逻辑运算符效率更高些。
三、例子
public class Test {
public static void main(String[] args) {
int num = 1;
System.out.println(false & num++==1);//即使前面为false,右边的表达式还是会继续执行,即num++
System.out.println(num);//2
System.out.println("=====华丽的分割线=====");
num = 1;
System.out.println(false && num++==1);//左边的表达式为false,右边的表达式将不会执行,即num不会自增
System.out.println(num);//1
}
}
输入的结果为:
false
2
=====华丽的分割线=====
false
1
短路与是同样的道理,大家可以自己编写代码验证一下
==============================================================