1

(i += 1)相当于i = i + 1

是否可以通过使用乘法来获得类似上面的内容:

(i *= 1), i = i * 1

我已经通过声明为 double 来尝试它,但我的结果中保持 0.0 值?

4

4 回答 4

3

听起来你是在将零乘以一。

0 * 1 = 0

于 2012-07-15T15:57:27.300 回答
2

首先声明double i = 1.0;(或者int i = 1;如果不需要十进制值。)您似乎乘以零。当然,除非您修改其他地方的值,否则i时间1将永远存在。1i

除此之外,请注意这几乎i *= 1等同于. 魔鬼在细节中,因为第一种形式将根据 Java 语言规范第5.1.3节执行隐式转换:i = i * 1

复合赋值表达式自动将它们执行的计算结果转换为左侧变量的类型。如果结果的类型与变量的类型相同,则强制转换无效。但是,如果结果的类型比变量的类型更宽,则复合赋值运算符将执行静默缩小原语转换

于 2012-07-15T15:59:55.943 回答
1

如果i在相乘之前没有赋值(除了零),那么它将是 0*1 等于 0。

于 2012-07-15T15:59:30.317 回答
1

它采用 double 的默认值,正如您在类范围中声明的那样......

尝试这个...

class Test implements TestInterface {


        public static void main(String[] args){
            double i = 1;
            System.out.println(i *= 1);
        }
     }
于 2012-07-15T16:00:43.950 回答