最近我在一本书中发现了一个代码片段,它为这样的字段设置了一个 Boolean
值
输入标识符
是字符串
的列表
if (identifier.size() >= 2) {
int c = Integer.parseInt(identifier.get(1));
bulk = (c & 4) == 4;
hazardous = (c & 2) == 2;
toxic = (c & 1) == 1;
}
这里需要什么一元 & 运算符?这不能使用简单的方法来完成吗?
c==4
等而不是 (c & 4)== 4
?
最佳答案
不,这是按位运算。
想象一下c=7
。在这种情况下,所有条件都成立。
c = 7;
bulk = (c & 4) == 4; // true
hazardous = (c & 2) == 2; //true
toxic = (c & 1) == 1; //true
在二进制中,你会得到这样的:
c = 0111; //4-bit to simplify output
bulk = (c & 0100) == 0100; //
hazardous = (c & 0010) == 0010; //true
toxic = (c & 0001) == 0001; //true
由于按位与 (&),您会得到 0111 & 0010 = 0010
等。
关于java - 不能使用 == 代替一元 & 来检查两个值是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443667/