java - operator&没有为类型定义(boolean,int)

时间:2012-10-03 00:10:46

标签: java operators syntax-error

我正在将c ++标头转换为java,以下内容不起作用。 opstring是一个字符串,alumacOP是一个字符串数组。 opindex是一个int。

opstring = alumacOP[opindex][(op >> 11) & 3 == 3]; //code does not work.

由于某种原因,这不起作用。这不是算法,而是eclipse说'&'未定义类型boolean和int。

所以我的问题是:为什么逻辑AND只引用java中的布尔值?因为这有效:

boolean boola,boolb;
if(boola & boolb)
  return;

但不是这个(eclipse仍然会引发错误:

int x = 9, y = 8;
for(int i = 0; i < 100; i++)
  if(x & y = i)
    return;

3 个答案:

答案 0 :(得分:3)

这取决于运营商的优先级。

opstring = alumacOP[opindex][(((op >> 11) & 3) == 3)?1:0];

是你想要的。 (注意&amp;周围的括号,以及?:将bool转换为int。

答案 1 :(得分:1)

&amp;你看到的是按位AND,而不是逻辑AND。

你看到它抛出错误的原因是你的if语句条件是赋值,而不是检查。

你需要使用2个等号(==),如if(x&amp; y == i)

答案 2 :(得分:0)

在java中,您可以在两个&或两个boolean上执行int,但不能在其中一个=上执行此操作。另请注意您的操作顺序以及==和{{1}}之间的区别。