int anInt = 1;
double aDouble = 2.5;

anInt = anInt + aDouble; // Error - need to cast double to int

anInt += aDouble; // This is ok. Why?

anInt = aDouble; // This is also an error.

anInt = 1 + aDouble; // This is also an error.

所以我的问题是:为什么做anInt += aDouble不是编译错误?

最佳答案

四种情况中的三种正确报告了错误。复合分配是该规则的唯一异常(exception)。 Java语言规范,第15.26.2部分,解释了以下原因:



如您所见,通过隐式插入强制类型转换可以避免该错误。

关于java - Java Puzzler-将double转换为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28833590/

10-12 03:12