【问题标题】:what is the difference between '&' and '&&' in java [duplicate]java中的'&'和'&&'有什么区别[重复]
【发布时间】:2012-08-20 09:12:36
【问题描述】:

可能重复:
& vs && and | vs ||
What are the cases in which it is better to use unconditional AND (& instead of &&)

在检查简单的 AND 条件时,我可以使用 '&' 和 '&&'。它适用于 '&' 和 '&&'。这两者有什么区别吗。

示例代码:

if(sample!=null & sample.size())
if(sample!=null && sample.size()

【问题讨论】:

  • 您的第一行代码可以抛出 NullPointerException,但第二行不会。这就是本质的区别。

标签: java


【解决方案1】:

第一个版本 (&) 总是计算两个参数。 第二个版本 (&&) 仅在第一个参数的计算结果为 TRUE 时才计算第二个参数。

同样适用于 OR 运算符:有 |和||。 (||) 仅当第一个参数被评估为 FALSE 时才评估第二个参数。

【讨论】:

  • 只有当第一个参数被评估为 false 时,OR 运算符才会评估第二个参数。
  • 感谢@maba,答案已更新
【解决方案2】:

第一个表达式检查两边,第二个表达式仅在第一个为真时检查第二个。

【讨论】:

    【解决方案3】:

    它只用一个单数 & 计算左侧和右侧,即使最后一侧是假的。

    有关详细信息,请参阅下面的问题...

    When should I not use the Java Shortcut Operator &

    【讨论】:

      【解决方案4】:
      '&' for bit wise 'AND'
      '&&' is for Logical 'AND'
      

      【讨论】:

      • 您的陈述是虚假和误导性的。 & 用于逻辑和位运算。
      【解决方案5】:

      && 是一个短路运算符,这意味着如果示例中的示例为空,它将停止并且不评估第二个条件。

      另一方面,& 不是短路的,即使 sample 为空,也会评估 sample.size()。当然在这种情况下它会抛出NullPointerException,但在短路情况下不会。

      【讨论】:

        【解决方案6】:
        if(sample!=null & sample.size())
        

        这里如果第一个条件不满足,那么它也会检查下一个条件。

        if(sample!=null && sample.size())
        

        这里如果第一个条件不满足,那么它也会not检查下一个条件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-12
          • 1970-01-01
          • 2012-08-28
          • 1970-01-01
          • 2017-02-17
          • 2011-09-27
          • 2013-04-22
          • 2012-03-29
          相关资源
          最近更新 更多