运算符“&”不能应用于byte、int、boolean

Operator "&" cannot be applied to byte, int, boolean

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

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

    int combined = flag1 | flag4;

    if (combined & flag1 == flag1) // <-- Operator & cannot be applied to int, boolean

如果我将标志转换为字节,错误会将 int 替换为 byte

编译器在您的 if 语句中看到二元运算符 &,将其视为逻辑与(因为它需要一个 returns 和 boolean 的表达式),并检查参数的类型。

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

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

if ((combined & flag1 ) == flag1)