如何按位操作? (运算符&不能应用于Integer或int)

时间:2019-05-29 21:39:19

标签: java android bitwise-operators

我想检查Android应用程序上的某些权限,我从用于不同设备和编码语言的API获得了这些权限,但这是我第一次尝试使用JAVA(Android),而且似乎有所不同。

在我的应用程序中,这些权限在一个将其返回为Integer的类中,因此,如果我要检查用户是否可以删除(十进制4),我想执行以下操作:

if(MyClass.getBit()&4){ // Is bit 2 on?
    // Yes, is on
}

我遇到以下错误:

  

必需的布尔值,已找到整数。

没关系,我可以将其设为布尔值:

if(MyClass.getBit()&4 != 0){ // Is bit&4 not 0?
    // Yes, it is different
}

我收到一个新错误:

  

运算符'&'不能应用于'java.lang.Integer','boolean'

所以我将返回值更改为int,我得到了相同的结果:

  

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

似乎我的方法不正确...

如何在Android上按位操作?

1 个答案:

答案 0 :(得分:2)

这是一个优先问题,您必须添加括号,

if ((MyClass.getBit()&4) != 0){ // Is bit&4 not 0?
    // Yes, it is different
}

不带括号,它将首先执行(4!= 0)部分,该部分返回一个布尔值,然后对该布尔值执行AND运算符,并在左侧执行整数。