黑马程序员技术交流社区

标题: 求解 =+ 和 += 的区别 [打印本页]

作者: jsfjb    时间: 2012-10-31 17:09
标题: 求解 =+ 和 += 的区别
  1.                 int b = 0;
  2.                 b = b+10;
  3.                 b+=10;
复制代码
代码很简单,但是,对这两个的运行原理模糊,请高手指点。
作者: xuchulong1    时间: 2012-10-31 17:29
这个细细的追究起来有一点效率的问题:
b = b+10;
这里我们有一个对b进行加10 的操作,然后,我们再把这个得出来的结果赋值给 b,就是 做了一次加,一次赋值
然后 我们的 b +=10;这个的话 就想当于b++;我们就是直接对b进行了一个加10操作,效率相对高一点。
作者: 黑马杜鹏    时间: 2012-10-31 17:33
=,+=都是属于赋值运算符,与我们常理解的数学上的符号含义不同。
b+=10;//相当于b=b+10
只不过是一个赋值语句的2中不同表达方式而已。
作者: 张胜格    时间: 2012-10-31 17:39
其实是差不都的,但是+=效率高点,所以一般用后者比较多
作者: 李凤鸣    时间: 2012-10-31 17:44
看着下面,能看出运算上的区别
short b=1;
b=b+10 (b+10)结果为整形,4位,b为short型(两位),所以不对
b+=10  就是赋值运算,b等于b+10的和,有一个自动转换,相当于b=10的道理

作者: 林剑    时间: 2012-10-31 21:58
学习了。试了下把short 改成long 可以编译运行成功。
作者: 任雷彬    时间: 2012-11-1 12:26
1.首先, =+ 与 +=两个含义有别。
    +=  是一个复合赋值运算符,只包含一个运算,那就是赋值。
而  =+ 则是包含两个运算,一个加法运算,一个赋值运算。
2.在运算时,不同类型参与运算时 +=赋值运算可以自动提升类型,不会损失精度。
               而 =+则会损失精度。

如   byte  i = 5;
         i = i + 3 ;  // i 会被强制提升 为int 类型,损失精度
         i += 3;//类型自动提升,不会损失精度。
作者: 王梁星    时间: 2012-11-1 13:30
+=可以避免精度损失问题
作者: 邢晏玮    时间: 2012-11-1 14:21
+=的效率要高一些,b = b+10;是先运算然后再把值赋给了b,而+=就是直接进行就把赋给了b
如果都是同一个类型的数值进行运算应该没有太大的区别 要是不同类型的运行 b = b+10运算后就的手动的
进行数据的提升,如果不提升的话编译的时候就会出现精度的损失,而+=就不会出现这种状况因为是有系统自动提升的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2