黑马程序员技术交流社区

标题: sum=sum+i 和sum+=i有什么区别吗 [打印本页]

作者: 张怀晶    时间: 2013-3-24 20:34
标题: sum=sum+i 和sum+=i有什么区别吗
sum=sum+i 和sum+=i有什么区别吗
作者: 许庭洲    时间: 2013-3-24 20:39
1. sum=sum+i ;//将变量sum的值和变量i的值相加后的结果赋值给变量sum;
2. sum+=i; //等价于sum=sum+i;
作者: 边道坚    时间: 2013-3-24 20:51
没有什么不同,只是个人的写法不同
作者: 秦久启    时间: 2013-3-24 21:14
基本没有什么不同,只是写法上有点区别而已。
作者: 王溢君    时间: 2013-3-24 21:38
大部分情况是没区别的。但我有一个例子值得你注意一下的。。。
  1. short s1 = 1;s1=s1+1;//这是错的。

  2. short s1 = 1;s1 += 1;//这是对的。

  3. 第一种写法,由于运算时会自动提升表达式的类型,所以结果是int,给s1类型int时,会有类型强转错误。

  4. 第二种写法:由于+=是JAVA语言规定的运算符,编译器会特殊处理,因此可以正常编译。
复制代码

作者: 邓建军    时间: 2013-3-24 21:45
没区别,sum+=i是sum=sum+i简写而已
作者: 苏冉    时间: 2013-3-24 22:13
计算结果都一样的  没有实质性区别  sum+=i似乎可以缩短运行时间
作者: 张振    时间: 2013-3-24 22:15
没有区别 两种写法  sum+=i 提高vs运行效率,反正视频上老师说鼓励这样写
作者: 李晓峰    时间: 2013-3-24 22:23
一般情况没有区别,但是要注意一点儿,byte,shrot,char,long都会自动提升为int型。例如:

class Cece2
{
        public static void main(String[] args)
        {
                byte sum = 3;
                byte i = 4;
                //sum = sum+i;//由于sum是个变化的值,系统会进行自动类型提升,将byte提升为int,这时候这种写法可能会损失精度。可以写成:sum = (byte)(sum+i);
                sum += i;//这种系统会进行自动转换类型的动作,所以不会损失精度;
                System.out.println(sum);
        }
}


作者: 狱之一族    时间: 2013-3-24 22:52
其结果都是一样,但是老师说过,在一般情况下最好用sum+=i,这样可以提高运行效率,
sum=sum+i;//是把sum+i赋值给了sum。、
sum+=i;//是等于直接改变了变量的值。

作者: 韦俊琳    时间: 2013-3-25 13:47
sum=sum+i;//遵循自左向右赋值原则;
sum+=i;//是规定,就是当自己参与运算然后赋值给自己的时候使用的+-*/都适用。
作者: 王鹏程    时间: 2013-3-25 15:29
都一样,自己喜欢怎么写,就咋写!
作者: lgh521911    时间: 2013-3-25 21:18
计算机科学特有,简化,节约,效率,二者在运行时无区别
作者: 黄诗宾    时间: 2013-3-25 21:28
sum=sum+1; 是sum+1后的值赋给sum; 有2个步骤
sum+=1;是sum自增+1,为1个步骤

例:
short s = 3;  
s=s+2; //编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。
s+=2;  //编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
  

作者: DWC_5101    时间: 2013-3-26 23:18
没区别,等价
作者: 孔健    时间: 2013-3-27 12:02
sum+=i 比sum=sum+i 的运算效率高点,其他没什么区别
作者: wdj_student    时间: 2013-3-27 12:10
都是一样的,相等
作者: 高文咪    时间: 2013-3-27 14:20
没区别,只是写法不一样而已!
作者: 赵喜平    时间: 2013-3-27 15:44
有区别,sum=sum+i 进行两次运算,而sum+=i只是进行一次赋值运算
作者: 曾志军    时间: 2013-3-27 18:16
毕老师的视频里就特别讲了这个




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