Java 涉及铸造的奇怪编译错误

Java 涉及铸造的奇怪编译错误,java,compiler-errors,Java,Compiler Errors,在IDE中工作时,我注意到一些非常奇怪的事情 double x1 = 0, x2 = 0; int a = (int) x1 = (int) x2; 所以这是无效的语法,毫不奇怪。然而,解释为什么它是无效语法让我感到困惑。当我将此代码放入Eclipse Luna并将鼠标悬停在第二行上时,会出现一条消息,上面显示: 类型不匹配:无法从布尔值转换为int值 1个快速解决方案: 将“a”的类型更改为“boolean” 如果忽略错误并继续运行,即使是可丢弃堆栈跟踪也会显示相同的消息: Exceptio

在IDE中工作时,我注意到一些非常奇怪的事情

double x1 = 0, x2 = 0;
int a = (int) x1 = (int) x2;
所以这是无效的语法,毫不奇怪。然而,解释为什么它是无效语法让我感到困惑。当我将此代码放入Eclipse Luna并将鼠标悬停在第二行上时,会出现一条消息,上面显示:

类型不匹配:无法从布尔值转换为int值

1个快速解决方案:

将“a”的类型更改为“boolean”

如果忽略错误并继续运行,即使是可丢弃堆栈跟踪也会显示相同的消息:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
        Type mismatch: cannot convert from boolean to int
        Syntax error on token "=", <= expected
线程“main”java.lang中出现异常。错误:未解决的编译问题: 类型不匹配:无法从布尔值转换为int值
令牌“=”上的语法错误,castoperator的优先级高于赋值运算符。因此,您无法将强制转换值分配给
x1
,因为编译器实际上将其解释为:

...
cast x1 to integer
assign (int) x2 to the value of (int) x1
...

步骤2将无法工作,因为<代码>(int)x1 < /Cord>不是“代码> LValue/Cuth>(SRY使用C++术语,我不知道java中是否存在同义词)。< / P>这是由Javac执行的,并且错误是不同的:意想不到的类型,需要:变量找到:值。我可以看到它来自哪里。你认为这是一个特定于Eclipse的错误吗?是的。处理奇数编译器异常错误时,请先尝试使用javac编译代码,它将提供更好的编译错误消息。@TNT IntelliJ给出错误“预期变量”(红色下划线为

(int)x1
。@LuiggiMendoza谢谢。下次我会记住的。