我有代码
[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;
}
}
为什么呢?感谢
答案 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编译器会构建相同的字节码。
关于您的上一个评论,分配运算符+=
与=+
不同,因为第二个是最简单的分配形式=
,后跟加号(+
)登录。