我正在查看java项目的源代码,在这里我找到了一个运算符|=
来表示布尔变量
有谁能告诉我这究竟是什么?以及使用它的最佳方式。
感谢您的回复,现在改进了我的问题:|=
简写操作员实际上做了什么。根据我的测试,它显示:
false | true = true
false | false = false
true | false = true
true | true = true
但我仍然不清楚它是如何决定结果的。以及我可以使用它的任何用例。
谢谢
答案 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上的此页。