JAVA类型转换
我知道Math.pow
方法在java中返回double
。 但是这段代码在我的程序中没有产生任何错误。 编译器是否自动将(int)
添加到我的代码中,还是有其他原因?
在代码之前,我声明int sum = 0; 和arg是int的数组。
for(int i=0; i < arg.length; i++) { sum += Math.pow(2, i) * arg[i]; }
根据jls-5.6.2二进制数字促销 :
如果任一操作数的类型为double,则另一个操作数转换为double。
表达式变为int += double
,并且根据jls-15.26.2复合赋值运算符 :
二进制运算的结果转换为左手变量的类型
结果最终转换为int
。