逻辑运算符:

  1. & 逻辑与(可以翻译成并且)<br /> | 逻辑或(可以翻译成或者)<br /> ! 逻辑于(取反)<br /> &&短路与()<br /> ||短路或<br /> <br />用普通话描述的话:100 大于 99 并且 100 大于 98 ,有道理<br />用代码描述的话:100 > 99 & 100 > 98 -->true<br />

非常重要:

  1. 逻辑运算符两边要求都是布尔类型,并且最终的运算结果也是布尔类型。<br /> 这是逻辑运算的特点。<br /> <br /> 100 & true 不行,语法错误。<br /> 100 & 200 不行,没有这种语法。<br /> true & false 这样可以。<br /> <br /> 100 > 90 & 100 > 101 --> false<br /> <br /> & 两边都是true,结果才是true<br /> | 有一边是true,结果就是true
  1. public class OperatorTest03{
  2. public static void main(String[] asge){
  3. // 对于逻辑与&运算符来说,只要有一边是false,结果就是false。
  4. // 只有两边同时为true,结果才是true。
  5. System.out.println(true & true); // true
  6. System.out.println(true & false); // false
  7. System.out.println(false & false; // false
  8. System.out.println(100 > 90 & 100 > 101); // false
  9. int a = 100;
  10. int b = 101;
  11. int c = 90;
  12. System.out.println(a < b & a > c); // true
  13. // 对于逻辑或呢?
  14. // 只要有一边是true,结果就是true。
  15. System.out.println(a < b | c > b); // true
  16. System.out.println(true | false); // true
  17. System.out.println(true & true); // true
  18. System.out.println(false | false); // false
  19. System.out.println(!false); // true
  20. System.out.println(!true); // false
  21. // 注意:这里需要加一个小括号。
  22. System.out.println(!(a > b)); // true
  23. /*
  24. 关于短路与 &&,短路或 ||
  25. 其中重点学习短路与,短路或照葫芦画瓢。
  26. 短路与 && 和逻辑与 & 有什么区别?
  27. 首先这两个运算符的运算结果没有任何区别,完全相同。
  28. 只不过“短路与&&”会发生短路现象。
  29. 什么是短路现象呢?
  30. 右边表达式不执行,这种现象叫做短路现象。
  31. 什么时候使用&&,什么时候使用& ?
  32. 从效率方面来说,&&比&的效率高一些。
  33. 因为逻辑与&不管第一个表达式结果是什么,第二个表达式一定会执行。
  34. 以后的开发中,短路与&&和逻辑与还是需要同时并存的。
  35. 大部分情况下都建议使用短路与&&
  36. 只有当既需要左边表达式执行,又需要右边表达式执行的时候,才会选择逻辑与&。
  37. */
  38. System.out.println(true & true); // true
  39. System.out.println(true & false); // false
  40. System.out.println(false & false); // false
  41. System.out.println(true && true); // true
  42. System.out.println(true && false); // false
  43. System.out.println(false && false); // false
  44. //接下来需要理解一下什么是短路现象,什么时候会发生“短路”。
  45. int x = 10;
  46. int y = 11;
  47. // 逻辑与&什么时候结果为true(两边都是true,结果才是true)
  48. System.out.println(x > y & x > y++); // 左边的 x > y 表达式结果已经是false了,其实整个表达式的结果已经确定是false了,按道理来说右边的表达式不应该执行。
  49. // 通过这个测试得出:x > y++ 这个表达式执行了。
  50. System.out.println(y); // 12
  51. // 测试短路与&&
  52. int m = 10;
  53. int n = 11;
  54. // 使用短路与&&的时候,当左边的表达式为false的时候,右边的表达式不执行。
  55. // 这种现象被称为短路现象
  56. System.out.println(m > n && m > n++);
  57. System.out.println(n); // 11
  58. // 问题: 什么时候发送短路或现象?
  59. // || 短路或
  60. // “或”的时候只要有一边是true,结果就是true。
  61. // 所以,左边的的表达式结果是true的时候,右边的表达式不需要执行,此时会短路。
  62. }
  63. }