【问题标题】:JAVA type conversionJAVA类型转换
【发布时间】:2018-09-23 15:44:00
【问题描述】:

我知道 Math.pow 方法在 java 中返回 double。但是这段代码没有在我的程序中产生任何错误。编译器会自动在我的代码中添加(int),还是有其他原因?

在代码之前,我声明了 整数总和 = 0; arg 是 int 数组。

for(int i=0; i < arg.length; i++) {
    sum += Math.pow(2, i) * arg[i];
}

【问题讨论】:

  • 什么是args
  • sumarg数组的数据类型是什么?
  • 如果 sum 是 double 并且 arg 是任何数字类型的数组,这没有错。
  • @SandeshGupta,sum 是一个intarg[i] 的类型无关紧要(反正要提升为double
  • @SandeshGupta 当 sum 为 int 时,乘法的 double 结果自动转换为 int

标签: java type-conversion int double type-narrowing


【解决方案1】:

jls-5.6.2 Binary Numeric Promotion

如果任一操作数是 double 类型,则另一个将转换为 double。

表达式变成int += double,根据jls-15.26.2 Compound Assignment Operators

二元运算的结果转换为 左侧变量

结果最终转换为int

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多