黑马程序员技术交流社区
标题:
sum += arr[x];
[打印本页]
作者:
橸瑩膤漃寞林
时间:
2014-3-9 14:42
标题:
sum += arr[x];
本帖最后由 橸瑩膤漃寞林 于 2014-3-9 18:22 编辑
sum += arr[x];这里的+=是什么意思?谁能帮我解释下这句话吗?
作者:
volvoxc
时间:
2014-3-9 14:45
a+=b就是a=a+b的意思,还有-+,*=等等什么的都是一个意思。
作者:
黑马晓志
时间:
2014-3-9 14:54
sum += arr[x];跟sum=sum+arr[x]; 一个意思,这样是简写。
作者:
何建明
时间:
2014-3-9 15:27
我觉得这样记比较简单 : 左右相加,然后再赋值给左边。
就是这个意思。:D
作者:
tacyjay在路上
时间:
2014-3-9 15:42
本帖最后由 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行代码前用//注释掉。
作者:
のソ夏末
时间:
2014-3-9 15:50
楼上给出的答案非常全面!!
sum+=arr[x]只是一次运算,两者相加的和再赋值给sum,其中有一个自动转换其数据类型的过程
作者:
pifuhanshu
时间:
2014-3-9 18:22
“+=”的是sun=sun+arr[i];的简称。意思就是左右相加赋值给变量
作者:
2528870651
时间:
2014-3-9 22:42
注意 : 是把左右两边的和赋值给左边 是一次运算
而 sum =sum+ arr[x]; 是2次运算sum+arr[x]一次 ,
然后把 和赋值给左边
如果右边有2种常数 如: int 和 double 就容易出错
作者:
2528870651
时间:
2014-3-9 22:46
如 : sum是 int型 而arr[]是double类型的数组 那么 arr[x]+sum 的结果会自动提升为double类型的数
而 sum还是int的
所以 double类型是不能 赋值给int类型的参数的
作者:
蓝枫
时间:
2014-3-9 23:00
意思就是把左右两边值的和赋给左边,sum+=arr[x]只是一次运算,而sum=sum+arr[x] 是两次运算
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2