Java “操作员”&&引用;不能应用于byte、int、boolean
关于如何比较组合位是否包含特定位的问题,我遇到了这个错误Java “操作员”&&引用;不能应用于byte、int、boolean,java,bit,bit-shift,Java,Bit,Bit Shift,关于如何比较组合位是否包含特定位的问题,我遇到了这个错误 int flag1 = 1 << 0; int flag4 = 1 << 5; int combined = flag1 | flag4; if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean int flag1=1编译器在if语句中看到二进制运
int flag1 = 1 << 0;
int flag4 = 1 << 5;
int combined = flag1 | flag4;
if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean
int flag1=1编译器在if
语句中看到二进制运算符&
,将其视为逻辑AND(因为它需要一个返回布尔值的表达式),并检查参数的类型
它遇到一个int
参数-组合的,和一个布尔的参数-flag1==flag1
。由于它需要两个boolean
参数(&
运算符不能应用于int
和boolean
),因此它给出了一个错误
添加括号,以便按所需顺序计算运算符:
if ((combined & flag1 ) == flag1)
谢谢,哈哈,自从我编辑了我的问题后,我试着编辑了你的帖子。但就在您更新之后;)AOE
应该是flag1
或flag4
。在我之前的问题中,每个人都给了我没有括号的答案,我想知道为什么…@MennoGouw Yep,我注意到了你的编辑并将其添加到了答案中。谢谢你的解释。我不熟悉位比较和运算,但我现在明白了。哦,还有一个Java运算符优先级问题。。。我也很困惑!(当然,它仍然比PHP好。?:
:P)