A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jsfjb 中级黑马   /  2012-10-31 17:09  /  2017 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.                 int b = 0;
  2.                 b = b+10;
  3.                 b+=10;
复制代码
代码很简单,但是,对这两个的运行原理模糊,请高手指点。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

8 个回复

倒序浏览
这个细细的追究起来有一点效率的问题:
b = b+10;
这里我们有一个对b进行加10 的操作,然后,我们再把这个得出来的结果赋值给 b,就是 做了一次加,一次赋值
然后 我们的 b +=10;这个的话 就想当于b++;我们就是直接对b进行了一个加10操作,效率相对高一点。
回复 使用道具 举报
=,+=都是属于赋值运算符,与我们常理解的数学上的符号含义不同。
b+=10;//相当于b=b+10
只不过是一个赋值语句的2中不同表达方式而已。
回复 使用道具 举报
其实是差不都的,但是+=效率高点,所以一般用后者比较多
回复 使用道具 举报
看着下面,能看出运算上的区别
short b=1;
b=b+10 (b+10)结果为整形,4位,b为short型(两位),所以不对
b+=10  就是赋值运算,b等于b+10的和,有一个自动转换,相当于b=10的道理

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
学习了。试了下把short 改成long 可以编译运行成功。
回复 使用道具 举报
1.首先, =+ 与 +=两个含义有别。
    +=  是一个复合赋值运算符,只包含一个运算,那就是赋值。
而  =+ 则是包含两个运算,一个加法运算,一个赋值运算。
2.在运算时,不同类型参与运算时 +=赋值运算可以自动提升类型,不会损失精度。
               而 =+则会损失精度。

如   byte  i = 5;
         i = i + 3 ;  // i 会被强制提升 为int 类型,损失精度
         i += 3;//类型自动提升,不会损失精度。
回复 使用道具 举报
+=可以避免精度损失问题
回复 使用道具 举报
+=的效率要高一些,b = b+10;是先运算然后再把值赋给了b,而+=就是直接进行就把赋给了b
如果都是同一个类型的数值进行运算应该没有太大的区别 要是不同类型的运行 b = b+10运算后就的手动的
进行数据的提升,如果不提升的话编译的时候就会出现精度的损失,而+=就不会出现这种状况因为是有系统自动提升的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马