逻辑运算符
逻辑运算符
1.逻辑运算符之逻辑与&
左边&右边 都必须为true 则返回的就是true
废话不多说上代码,代码最有说服力
public static void main(String[] args) {
//逻辑运算符之逻辑与
//左边&右边 都必须为true 则返回的就是true
System.out.println("&单并且");
System.out.println(true&true);
System.out.println(true&false);
System.out.println(false&false);
/*
结果为&单并且
true
false
false
*/
int a=10;
int b=20;
int c=30;
System.out.println("演示比较");
//a>b false
//b>c false
System.out.println(a>b&b>c);//false
//a<b true
//b<c true
System.out.println(a<b&b<c);//true
//a<b true
//b>c false
System.out.println(a<b&b>c);//false
}
}
2.逻辑运算符之逻辑或 |
左边 | 右边 只要有一个为true的话,则返回结果就是true
上代码
public static void main(String[] args) {
//逻辑运算符之逻辑或
//左边 | 右边 只要有一个为true的话,则返回结果就是true
System.out.println(true|false);//true
System.out.println(false|false);//false
System.out.println(true|true);//true
System.out.println("演示");
int a=10;
int b=20;
int c=30;
System.out.println("演示比较");
//a>b false
//b>c false
System.out.println(a>b|b>c);//false
//a<b true
//b<c true
System.out.println(a<b|b<c);//true
//a<b true
//b>c false
System.out.println(a<b|b>c);//true
}
}
3.短路逻辑运算符&&
直接代码来解释
public static void main(String[] args) {
//短路逻辑运算符
int a=10;
int b =20;
//a++>100; 返回为false b++>20 返回为true
System.out.println((a++>100)&(b++>10));//false
System.out.println(a);//a=11
System.out.println(b);//b=21
System.out.println("=====&&======");
System.out.println((a++>100)&&(b++>10));//false
System.out.println(a);//a=11
System.out.println(b);//b=21
}
}
最后那个b=21知道啥原因吗?原因就是使用双&&左边会反回false 右边不会被执行 直接干短路,根本不吊它了
4.短路运算符之双或者 ||
直接代码来解释
public class demo5 {
public static void main(String[] args) {
//短路运算符之双或者
int a=10;
int b=20;
System.out.println("短路或");
//使用或者 左边和右边只要有一个返回为true,最终结果就是true
//a++>10 true b++>100 false
System.out.println((a++>1)|(b++>100)); //结果true
System.out.println(a); //11
System.out.println(b);//21
System.out.println("使用双或者");
System.out.println((a++>1)||(b++>100)); //结果true
System.out.println(a); //12
System.out.println(b);//21
}
}
最后b=21有人会问使用&或者&&不是后面不被执行了,怎么使用 || 也会被短路了呢?原因是啥?原因就是 || 也有短路的成分,你前面都判断是正确的,后面也不用看了。提高效率,那么有人会问,那要是前面是错误的,后面的是对的返回的是什么?前面会不会执行,这样说吧,只要有一个返回的是true,那么就会返回true,除非都是false。返回的是false,直接代码吧
public static void main(String[] args) {
//短路运算符之双或者
int a=10;
int b=20;
System.out.println("短路或");
//使用或者 左边和右边只要有一个返回为true,最终结果就是true
//a++>10 true b++>100 false
System.out.println((a++>1)|(b++>100)); //结果true
System.out.println(a); //11
System.out.println(b);//21
System.out.println("使用双或者");
System.out.println((a++>100)||(b++>10)); //结果true
System.out.println(a); //12
System.out.println(b);//22
}
}