Java类型混淆
这个问题在这里已经有了答案:
第一个作品和第二个作品并不是因为*=
+=
-=
等添加了自动投射 。
例如,如果你要改变你的第二个例子,
int k=10;
double kk = 10.10;
k*= kk;
它应该工作。 或者,你可以添加一个明确的类型转换,如rst = (int)(k*kk);
在对不同数据类型的两个变量应用算术运算时,Java中的算术运算发生。 在这种情况下,编译器会将二进制算术运算中的一个操作数的数据类型转换为另一个操作数的类型。
在你的情况下,为了乘以一个int和一个double,int被提升为double,结果是double。 所以,它不能存储到一个int。
更多信息,请访问:http://www.codemiles.com/java/arithmetic-promotion-t3487.html#sthash.sdHtt7pG.dpuf
Java中整数( int
)和浮点数相乘的结果总是会导致浮点数( double
)。 您正在将此结果分配给需要投射的rst
整数。