运算符"&"不能应用于byte,int,boolean

Mad*_*nyo 6 java bit-shift bit

根据我之前关于如何比较组合位是否包含特定位的问题,我遇到了这个错误.

    int flag1 = 1 << 0;
    int flag4 = 1 << 5;

    int combined = flag1 | flag4;

    if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean
Run Code Online (Sandbox Code Playgroud)

如果我将标志转换为字节,则错误替换intbyte.

Era*_*ran 13

编译器&if语句中看到二元运算符,将其视为逻辑AND(因为它需要一个返回a的表达式boolean),并检查参数的类型.

它遇到一个int论点 - combined和一个boolean论点 - flag1 == flag1.由于它需要两个boolean参数(&运算符不能应用于a int和a boolean),因此会出错.

添加括号以便按所需顺序评估运算符:

if ((combined & flag1 ) == flag1)
Run Code Online (Sandbox Code Playgroud)