【问题标题】:What does |, !, and & do outside of an if statement? [duplicate]|、! 和 & 在 if 语句之外做什么? [复制]
【发布时间】:2013-12-27 08:52:30
【问题描述】:

这似乎是一个非常愚蠢的问题,但我看到比较符号,例如:| ! & 在 If 语句之外,并且一直想知道它的含义以及如何使用它。我看到的大多数是设置变量,例如int = 1 | 2。谢谢。

【问题讨论】:

标签: java


【解决方案1】:

他们完全按照他们在if 内部所做的工作。假设 a 和 b 都是 boolean 类型:

  1. 如果ab 为真(或两者都为真),a | b 为真。
  2. 如果ab 都为真,a & b 为真。
  3. !a 为真,当且仅当 a 为假。

我怀疑让您感到困惑的是boolean 类型的表达式可以像intfloat 一样被视为值的概念。不过,这里并没有发生什么神奇的事情。 boolean 是一个类似于 intfloat 的类型。您可以拥有boolean 变量、boolean 参数、boolean 字段和返回boolean 的函数。

另请注意,使用布尔参数时,您更可能遇到||&&,而不是|&。它们大致相同,但表现出短路行为。例如,在计算表达式 f() || g() 时,如果 f() 返回 true,则整个表达式将计算为 true,并且 g() 甚至不会被调用,因为它不会影响答案。如果g() 很慢,这会更快,但如果g() 会产生副作用(例如更改全局状态或打印到控制台),也会改变程序的含义。相反,无论f() 返回什么,f() | g() 都会评估 g()

【讨论】:

    【解决方案2】:

    听说过位运算符吗?是的,它们是一样的。

    参考:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 2021-09-17
      • 2014-06-12
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多