【问题标题】:Difference between Bitwise and boolean operator 'AND' [duplicate]按位和布尔运算符'AND'之间的区别[重复]
【发布时间】:2011-09-11 08:13:37
【问题描述】:

可能的重复:
logical operators in java
What's the difference between | and || in Java?

正如标题所说,我需要知道& 运算符和&& 运算符之间的区别。 谁能用简单的话帮助我。

  1. 它们之间有何不同?
  2. 在 IF 语句中使用哪一个?

【问题讨论】:

  • 伙计们,只是因为这可能是一个骗局并不意味着这不是一个真正的问题......说真的......
  • @Mitch:你至少可以链接副本。
  • @Paŭlo Ebermann :从什么时候开始我被任命执行我确信发帖人能够进行的搜索???
  • @Mitch:如果您断言它是重复的,那么您应该链接一个。如果您说多次,则更是如此。我看了一眼,没有找到完全相同的副本。

标签: java if-statement operators bitwise-operators


【解决方案1】:

实际上有三个“与”运算符:

  • a && b,a 和 b 为布尔值:计算 a。如果为真,则评估 b。如果为真,则结果为真。否则,结果为假。 (即,如果 a 不为真,则不计算 b。)
  • a & b,a 和 b 为布尔值:计算两者,做逻辑与(即只有当两者都为真时才为真)。
  • a & b,其中 a 和 b 都是整数类型(int、long、short、char、byte):计算 a 和 b,然后按位与。

如果将boolean 视为一位整数类型,则可以将第二个视为第三个的特殊类型;-)

作为if-statement 的顶级条件,您可以使用前两个条件,但第一个很可能有用。 (即,在很多情况下您确实需要第二个而第一个会做错事,但相反的方式更常见。在大多数情况下,第一个只是快一点。)

【讨论】:

    【解决方案2】:

    如果第一个结果为 FALSE,&& 不会评估第二个结果。 & 会。

    【讨论】:

    • 不是完全正确的。还有另一个区别:& 运算符也是按位与运算符,而 && 不是。
    • @Bohemian:可以说这已经在问题标题中了。
    • @Bohemian:点击我的回答上的编辑,你看到的可能很有趣。 :P (至于我为什么将其注释掉:因为它的一部分对 Java 来说是错误的,而一部分是多余的——无论如何你不能将 && 用于整数,所以你不会真的出错在这里。)
    【解决方案3】:

    && 仅在第一个操作为真时计算第二个表达式。 & 计算两个表达式(即使第一个表达式为假并且计算第二个表达式没有意义)。因此 && 在逻辑运算中比 & 快一点。因此 && 也称为短路与。

    & 除了逻辑运算符之外,还可以用作位运算符。因此,您可以对 2 个数字进行“位与”,例如

    int result = 1 & 3; // will evaluate to 1
    

    && 不能用作位与运算符。

    对于条件 IF 运算符,使用 &&。它比 & 快一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2013-05-16
      • 2011-05-29
      相关资源
      最近更新 更多