=按位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