双与&& 和双或 || ,性能更好,少一部操作
public class OperatorDemo6 {
public static void main(String[] args) {
// 目标:学会使用逻辑运算符,并能够选择合适的逻辑运算符解决问题
double size = 9.8;
double storage = 6;
// 单 &(与) 必须前后都是true 结果才是true
System.out.println(size >= 6.95 & storage >= 8); // false, 后面条件不满足
// 单 |(或)只要一个为true ,结果就是true
System.out.println(size >= 6.95 & storage >= 8); // true,其中一个条件满足就为true
System.out.println(!true); // false
System.out.println(!false); // true
// 逻辑异或 必须两个不同结果才是true
System.out.println(false ^ true); // 结果不同,返回true
System.out.println(true ^ false); // 结果不同,返回true
System.out.println(true ^ true); // 结果相同,返回false
System.out.println(false ^ false); // 结果相同,返回false
System.out.println("---------------&& & || | 的区别---------------------");
int a = 10;
int b = 20;
// && 两者都为true结果才为true,前面一方为false后面就不执行
System.out.println(a>100 && ++b<10); // a>100 结果为false,&&前面为false,后面就不执行
System.out.println(b); // 后面的++b没有执行所以输出20
System.out.println(a>100 & ++b<10); // 单&,两边都会执行
System.out.println(b); // 单&两边都执行,所以++b执行了,输出结果为21
int i = 10;
int j = 20;
// 双或|| 只要一方为true,结果就为true,后面不执行
System.out.println(i>2 || ++j <5);// 后面的++j没有执行,结果为true
System.out.println(j);// 后面的++j没有执行,所以结果为20
System.out.println(i>2 | ++j <5);
System.out.println(j); // 单或|,后面会执行,所以输出结果为21
}
}