image.png
    双与&& 和双或 || ,性能更好,少一部操作
    image.png

    1. public class OperatorDemo6 {
    2. public static void main(String[] args) {
    3. // 目标:学会使用逻辑运算符,并能够选择合适的逻辑运算符解决问题
    4. double size = 9.8;
    5. double storage = 6;
    6. // 单 &(与) 必须前后都是true 结果才是true
    7. System.out.println(size >= 6.95 & storage >= 8); // false, 后面条件不满足
    8. // 单 |(或)只要一个为true ,结果就是true
    9. System.out.println(size >= 6.95 & storage >= 8); // true,其中一个条件满足就为true
    10. System.out.println(!true); // false
    11. System.out.println(!false); // true
    12. // 逻辑异或 必须两个不同结果才是true
    13. System.out.println(false ^ true); // 结果不同,返回true
    14. System.out.println(true ^ false); // 结果不同,返回true
    15. System.out.println(true ^ true); // 结果相同,返回false
    16. System.out.println(false ^ false); // 结果相同,返回false
    17. System.out.println("---------------&& & || | 的区别---------------------");
    18. int a = 10;
    19. int b = 20;
    20. // && 两者都为true结果才为true,前面一方为false后面就不执行
    21. System.out.println(a>100 && ++b<10); // a>100 结果为false,&&前面为false,后面就不执行
    22. System.out.println(b); // 后面的++b没有执行所以输出20
    23. System.out.println(a>100 & ++b<10); // 单&,两边都会执行
    24. System.out.println(b); // 单&两边都执行,所以++b执行了,输出结果为21
    25. int i = 10;
    26. int j = 20;
    27. // 双或|| 只要一方为true,结果就为true,后面不执行
    28. System.out.println(i>2 || ++j <5);// 后面的++j没有执行,结果为true
    29. System.out.println(j);// 后面的++j没有执行,所以结果为20
    30. System.out.println(i>2 | ++j <5);
    31. System.out.println(j); // 单或|,后面会执行,所以输出结果为21
    32. }
    33. }