为什么num + = array [i]与for循环中的num = num + array [i]的工作方式不同

时间:2017-03-18 22:12:03

标签: java

我有代码

[System.AppDomain]::CurrentDomain.remove_AssemblyResolve($OnAssemblyResolve)

我发现在for循环中,如果我使用

,答案是不正确的
public class NumArray {
    int[] instanceNums;
    public NumArray(int[] nums) {
        this.instanceNums=nums;
    }

    public int sumRange(int i, int j) {
        if(i<0||j>instanceNums.length-1||instanceNums.length==0||instanceNums==null) return 0;
        int res=0;
        for(int index=i;index<=j;index++){
           res=res+instanceNums[index];
        }
        return res;
    }
}

为什么呢?感谢

1 个答案:

答案 0 :(得分:0)

不会注意到您添加值的两种方式之间的任何差异,因为使用+=赋值运算符的表达式,例如

x += y

相当于

x = x + y

这就是Oracle的状态。让我们来证明这个理论。考虑这个课程:

class Analysis {
    public static void add(int x, int y) {
        x = x + y;
    }
}

使用javap反编译字节码后,您可以看到以下结果:

  public static void add(int, int);
    Code:
       0: iload_0
       1: iload_1
       2: iadd
       3: istore_0
       4: return

如果用add替换静态方法X += y的定义,Java编译器会构建相同的字节码。

关于您的上一个评论,分配运算符+==+不同,因为第二个是最简单的分配形式=,后跟加号(+)登录。