何时以及为何使用或等于(| =)速记运算符

时间:2015-03-17 07:41:10

标签: java operators

我正在查看java项目的源代码,在这里我找到了一个运算符|=来表示布尔变量 有谁能告诉我这究竟是什么?以及使用它的最佳方式。

感谢您的回复,现在改进了我的问题:|=简写操作员实际上做了什么。根据我的测试,它显示:

false | true = true
false | false = false
true | false = true
true | true = true

但我仍然不清楚它是如何决定结果的。以及我可以使用它的任何用例。
谢谢

3 个答案:

答案 0 :(得分:7)

a |= b;a = a | b;的含义相同,与a += b;a = a + b;的含义相同。

只要您拥有a = a | b;形式的某些内容(很少见)并希望缩短它,就会使用它。

答案 1 :(得分:4)

您已经得到了答案,它是一个简短的复合赋值运算符。所以,如果你写

a1 |= a2;

a1 = a1 | a2; 
这两者意味着同样的事情。它只是编写代码的方式。

关于你问的两个W,即何时使用以及为什么要使用?完全依赖于程序员,因为一些程序员发现第一个更可读,有些找到后者。

以下是other such operators的列表。


Operator   Description                                   Example
----------------------------------------------------------------------------------------
|=        bitwise inclusive OR and assignment operator   C |= 2 is same as C = C | 2
^=        bitwise exclusive OR and assignment operator   C ^= 2 is same as C = C ^ 2
&=        Bitwise AND assignment operator                C &= 2 is same as C = C & 2
<<=       Left shift AND assignment operator             C <<= 2 is same as C = C << 2
>>=       Right shift AND assignment operator            C >>= 2 is same as C = C >> 2  
----------------------------------------------------------------------------------------

答案 2 :(得分:1)

它是用左手操作数进行逻辑OR的赋值的简写形式。

a|=b ---> a=a|b

您可以与其他运营商做同样的事情:+-*&^等。

更新

添加一些东西,因为它似乎需要对逻辑的简短解释或:只有当至少有一个布尔操作数为真时,此运算符才返回true。请参阅wiki上的此页。