Rac*_*hel 20 java bit-manipulation operators variable-assignment
我只是通过有人编写的代码,我看到了|=用法,查看Java运算符,它建议按位或分配操作,任何人都可以解释并给我一个例子吗?
这是读取它的代码:
for (String search : textSearch.getValue())
matches |= field.contains(search);
Run Code Online (Sandbox Code Playgroud)
Gra*_*and 30
a |= b;
Run Code Online (Sandbox Code Playgroud)
是相同的
a = (a | b);
Run Code Online (Sandbox Code Playgroud)
它计算两个操作数的按位OR,并将结果赋给左操作数.
要解释您的示例代码:
for (String search : textSearch.getValue())
matches |= field.contains(search);
Run Code Online (Sandbox Code Playgroud)
我认为matches是boolean; 这意味着按位运算符的行为与逻辑运算符相同.
在循环的每次迭代中,它OR是当前matches返回的值的当前值field.contains().true如果它已经为真,或者field.contains()返回true ,则具有将其设置为的效果.
因此,它计算整个循环中的任何调用field.contains()是否已返回true.
Aln*_*tak 10
a |= b 是相同的 a = (a | b)
布尔变量
在boolean上下文中,它意味着:
if (b) {
a = true;
}
Run Code Online (Sandbox Code Playgroud)
也就是说,如果b是真,那么a将是真的,否则a将是未修改的.
按位操作
在一个有点明智的上下文中,它意味着所设置的每个二进制位b都将被设置a.明确的位b将不会被修改a.
因此,如果设置了位0 b,则a根据以下示例,它也将设置为:
这将设置整数的底部位:
a |= 0x01
这将清除底部位:
a &= ~0x01
这将切换底部位:
a ^= 0x01;
| 归档时间: |
|
| 查看次数: |
18485 次 |
| 最近记录: |