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/