本帖最后由 tacyjay在路上 于 2014-3-9 16:15 编辑
sum+=arr[x];
即是相当于sum=sum+arr[x];
相当于把两边的值加起来,赋予给左边的sum;
值得注意的是,
sum+=arr[x]只是一次运算,而sum=sum+arr[x] 是两次运算,先相加,再赋值给左边。
因此要注意 数据类型提升的问题。
下面是例子:
- class Demo
- {
- public static void main(String[] args)
- {
- int m=1;
- char x='a',y='a',z='a';
- x=x+m; //因为x、y占2个byte,m占4个byte,把相加为4byte的int类型赋给只有2个byte的char,此处编译不通过,提示会损失精度。
- y+=m; //+=会自动转换数据类型,与左边保持一致,即强制转换为char类型。执行结果为 y=b。
- m=z+m;//左边为int类型,所以编译可以通过,执行结果为m=98。
- System.out.println("x="+x);
- System.out.println("y="+y);
- System.out.println("m="+m);
- }
- }
复制代码 注:上例编译时,应该在07行代码前用//注释掉。
|