=按位OR并分配示例
这个问题在这里已经有了答案:
a |= b;
是相同的
a = (a | b);
它计算两个操作数的按位或 , 并将结果赋给左操作数。
解释您的示例代码:
for (String search : textSearch.getValue())
matches |= field.contains(search);
我认为matches是一个boolean ; 这意味着按位运算符的行为与逻辑运算符的行为相同。
在循环的每次迭代中,它OR S的当前值matches与任何从返回field.contains() 这有其设置为效果true ,如果它已经真实的, 或者如果field.contains()返回true。
因此,它会计算在整个循环中是否有任何对field.contains()的调用返回true 。
a |= b与a = (a | b)
布尔变量
在boolean上下文中,它表示:
if (b) {
a = true;
}
也就是说,如果b是真的,那么a将是真的,否则a将是未修改的。
按位操作
在一个明智的上下文中,它意味着在b设置的每个二进制位将被设置为a 。 这是明显的位b将在未修改的a 。
所以如果在b设置了位0,它也将被设置为a ,如下例所示:
这将设置一个整数的最低位:
a |= 0x01
这将清除最低点:
a &= ~0x01
这将切换底部位:
a ^= 0x01;
此代码:
int i = 5;
i |= 10;
相当于这个代码:
int i = 5;
i = i | 10;
同样,这个代码:
boolean b = false;
b |= true;
相当于这一个:
boolean b = false;
b = b | true;
在第一个示例中,正在执行按位OR。 在第二个例子中,执行一个布尔OR。
链接地址: http://www.djcxy.com/p/36373.html