什么是^ =运算符?

tak*_*rkk -18 java operators bitwise-operators

我刚刚在SO上找到了答案,其中一个代码示例(我认为是java)使用了一个我以前从未见过的运算符:^=.我搜索谷歌和SO并且无法在其他任何地方找到它,当我尝试使用java测试时,eclipse发疯了.也许这只是答案中的一个错字,我不确定.这个运营商是什么?它有名字吗?它的用语是什么?

lda*_*v1s 8

它是C/C++/C#/ Java/Javascript/Perl按位xor赋值运算符.


tak*_*rkk 6

这是 C/C++/C#/Java/Javascript/Perl/PHP/Pike 按位异或赋值运算符。

当且仅当所涉及的两个操作数之一为 true时,XOR(异或)条件语句的计算结果才为 true 。

例子:

0 ^ 0 = false
1 ^ 0 = true
0 ^ 1 = true
1 ^ 1 = false //Regular OR would evaluate this as true
Run Code Online (Sandbox Code Playgroud)

就像您可以使用+= -= *= /=etc... 一样,该运算符可以与等号组合以在完成时执行赋值。

x += 1; //Same as x = x + 1;
t ^= f; //Same as t = t ^ f;

boolean a = false;
boolean b = true;
a ^= b; //a now evaluates to true;
Run Code Online (Sandbox Code Playgroud)

请参阅Java 运算符