Java中2位运算符的强大功能?

时间:2011-05-20 13:18:46

标签: java enums bitwise-operators

我有一个int变量来保存选项,可能包括none,一个或多个子选项,如下所示:

public static final int OPERATOR_PLUS = 1;
public static final int OPERATOR_SUBTRACT = 2;
public static final int OPERATOR_MULTIPLY = 4;
public static final int OPERATOR_DIVIDE = 8;

我需要一个函数,如果该变量包含子选项,它将返回。我试过了:

return (Operator & Operators);
return (Operator && Operators);

但是Eclipse说它们都是语法错误(运算符和运算符都是int)。请告诉我如何在Java中使用AND位运算符。在.NET中,我使用:Operator And Operators

感谢。

6 个答案:

答案 0 :(得分:5)

Java不会将int视为boolean(与C ++,AFAIU不同)。尝试

return (Operator & Operators) > 0;

答案 1 :(得分:2)

您的方法的返回类型是什么?如果是boolean,那么你应该这样写:

public boolean hasOperatorBit() {
    return (Operator & Operators) != 0;
}

答案 2 :(得分:0)

第一个是按位 AND运算符,并且应该是有效的语法,只要方法的返回类型是int或类似的东西。如果你想要一个布尔返回类型,你需要做一些像return (operator & operators) != 0;

这样的事情

第二个无效;它是一个逻辑 AND运算符,因此它的两个参数都必须是boolean

答案 3 :(得分:0)

您需要使用按位AND将您的变量与相关运算符进行比较,以查看它是否与运算符等效。

例如,

返回OPERATOR_PLUS&运营商== OPERATOR_PLUS;

因为如果你考虑按位如何工作,你想说我的变量是否包含运算符的位标志。

答案 4 :(得分:0)

第一行检查是正确的,而您一次只能检查一个操作员的可能性。此外,您必须检查结果是否不等于0才能正确。

return ((operator & sub_operator) != 0);

答案 5 :(得分:0)

public boolean checkOperator(int operators, int operator) {
 return (operators & operator) != 0;
}

Tutorials以便更好地理解。