当前位置:   article > 正文

运算符—逻辑运算符

逻辑运算符

目录

5.逻辑运算符

5.1逻辑运算符概述

 5.2短路逻辑运算符


5.逻辑运算符

(学完之后要求能够使用逻辑运算符完成逻辑运算)

5.1逻辑运算符概述

在数学中,一个数据x,大于3,小于6,我们可以写为这样来表示:3<x<6

在Java中,需要把上面的狮子先进行拆解,在进行合并表达。

拆解为:x>3.x<6

合并为:x>3 && x<6

我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符。

当然逻辑运算符也可以直接连接布尔类型的常量或者变量。

逻辑运算符分类:

 5.2短路逻辑运算符

 注意事项:

逻辑与&:无论左边真假,右边都要执行。

短路与&&:如果左边为真,右边执行;如果左边为假,右边不执行。

逻辑或|:无论左边真假,右边都要执行。

短路与||:如果左边为真,右边执行;如果左边为假,右边不执行。

最常用的逻辑运算符:&&||

代码演示:

  1. /*
  2. 逻辑运算符
  3. */
  4. public class OperatorDemo7 {
  5. public static void main(String[] args) {
  6. //定义变量
  7. int i = 10;
  8. int j = 20;
  9. int k = 30;
  10. //&逻辑与 有false则false演示
  11. System.out.println( (i > j) & (i > k) );//false & false得false
  12. System.out.println( (i > j) & (i < k) );//false & true得false
  13. System.out.println( (i < j) & (i < k) );//true & true得true
  14. System.out.println( (i < j) & (i > k) );//true & false得false
  15. System.out.println( (i == j) & (i == k) );//false & false得false
  16. System.out.println( (i != j) & (i != k) );//true & true得true
  17. System.out.println( (i >= j) & (i >= k) );//false & false得false
  18. System.out.println( (i <= j) & (i <= k) );//true & true得true
  19. System.out.println("--------------------");
  20. //|逻辑或 有true则true演示
  21. System.out.println( (i > j) | (i > k) );//false | false得false
  22. System.out.println( (i > j) | (i < k) );//false | true得true
  23. System.out.println( (i < j) | (i < k) );//true | true得true
  24. System.out.println( (i < j) | (i > k) );//true | false得true
  25. System.out.println( (i == j) | (i == k) );//false | false得false
  26. System.out.println( (i != j) | (i != k) );//true | true得true
  27. System.out.println( (i >= j) | (i >= k) );//false | false得false
  28. System.out.println( (i <= j) | (i <= k) );//true | true得true
  29. System.out.println("--------------------");
  30. //^逻辑异或 相同则为false,不同为ture
  31. System.out.println( (i > j) ^ (i > k) );//false ^ false得false
  32. System.out.println( (i > j) ^ (i < k) );//false ^ true得true
  33. System.out.println( (i < j) ^ (i < k) );//true ^ true得false
  34. System.out.println( (i < j) ^ (i > k) );//true ^ false得true
  35. System.out.println( (i == j) ^ (i == k) );//false ^ false得false
  36. System.out.println( (i != j) ^ (i != k) );//true ^ true得false
  37. System.out.println( (i >= j) ^ (i >= k) );//false ^ false得false
  38. System.out.println( (i <= j) ^ (i <= k) );//true ^ true得false
  39. System.out.println("--------------------");
  40. //!逻辑非 !false为true,!!false为false,!!!false为true,以此类推
  41. System.out.println( !(i > j) );//得true
  42. System.out.println( !!(i > j) );//得false
  43. System.out.println( !!!(i > j) );//得true
  44. System.out.println( !!!!(i == j) );//得false
  45. System.out.println("--------------------");
  46. //&&短路与 结论与&逻辑与相同 有false则false,否则为true
  47. System.out.println( (i > j) && (i > k) );//false & false得false
  48. System.out.println( (i > j) && (i < k) );//false & true得false
  49. System.out.println( (i < j) && (i < k) );//true & true得true
  50. System.out.println( (i < j) && (i > k) );//true & false得false
  51. System.out.println( (i == j) && (i == k) );//false & false得false
  52. System.out.println( (i != j) && (i != k) );//true & true得true
  53. System.out.println( (i >= j) && (i >= k) );//false & false得false
  54. System.out.println( (i <= j) && (i <= k) );//true & true得true
  55. System.out.println("--------------------");
  56. //||短路或 结论与|逻辑或相同,有true则true,否则为false
  57. System.out.println( (i > j) || (i > k) );//false || false得false
  58. System.out.println( (i > j) || (i < k) );//false || true得true
  59. System.out.println( (i < j) || (i < k) );//true || true得true
  60. System.out.println( (i < j) || (i > k) );//true || false得true
  61. System.out.println( (i == j) || (i == k) );//false || false得false
  62. System.out.println( (i != j) || (i != k) );//true || true得true
  63. System.out.println( (i >= j) || (i >= k) );//false || false得false
  64. System.out.println( (i <= j) || (i <= k) );//true | |true得true
  65. System.out.println("--------------------");
  66. //逻辑与&和短路与&&的区别演示
  67. //System.out.println( (i++ > 100) & (j++ > 100) );//false & false得false
  68. System.out.println( (i++ > 100) && (j++ > 100) );//false && false得false 无区别
  69. /*
  70. 但是把上面逻辑与的注释掉就得到i == 11;j == 20
  71. 为什么呢?因为上面输出语句先运算i++再判断是否大于100,
  72. 根据逻辑与的运算,第一条判断出来是false后再继续运算j++在判断是否大于100,
  73. 在得到第二条false,则判定为false
  74. 但是短路与是先判断第一条i++是否大于100,如果false,
  75. 那就直接根据短路与的结论直接不用验证后面的关系表达式直接判断为false
  76. 因为逻辑与的结论是有false则全false
  77. 所以短路与只要判断出第一个false就不再对后面的关系表达式进行运算直接判定为false
  78. 就是为什么叫短路与&&,短路或也同理。
  79. */
  80. System.out.println("i:" + i);//得11
  81. System.out.println("j:" + j);//得20
  82. }
  83. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/215150
推荐阅读
相关标签
  

闽ICP备14008679号