在Java / Android中,| =是什么意思? (按位或分配)

时间:2012-05-10 21:31:36

标签: java android bitwise-operators

  

可能重复:
  Shortcut “or-assignment” (|=) operator in Java

我在Android SDK文档中找到了以下示例代码:

    boolean retValue = false;
    retValue |= mActionBarHelper.onCreateOptionsMenu(menu);
    retValue |= super.onCreateOptionsMenu(menu);

任何人都可以向我展示相同的代码,以证明这有什么作用吗?

注意:我假设方法调用返回一个布尔值,所以我想看一个示例,它看起来像if-else结构。

2 个答案:

答案 0 :(得分:8)

|应用于布尔值只是一个简单的布尔OR。

boolean retValue = false;
retValue = retValue | mActionBarHelper.onCreateOptionsMenu(menu);
retValue = retValue | super.onCreateOptionsMenu(menu);

答案 1 :(得分:2)

or与我自己的简写并分配给我,虽然它是非短路or而不是逻辑or。因为它可以作为分配的简短版本和or:ing有时用于布尔值,因为没有|| =。 但重要提示:在这种情况下,调用这两种方法,即使retValue可能已经是true

所以等价(逻辑明智)语句可以是几个,但有些可能是:

boolean a = mActionBarHelper.onCreateOptionsMenu(menu);
boolean b = super.onCreateOptionsMenu(menu);
boolean retValue =  a || b;

boolean retValue = mActionBarHelper.onCreateOptionsMenu(menu);
retValue = super.onCreateOptionsMenu(menu) || retValue;