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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张怀晶 中级黑马   /  2013-3-24 20:34  /  5919 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

sum=sum+i 和sum+=i有什么区别吗

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

19 个回复

倒序浏览
1. sum=sum+i ;//将变量sum的值和变量i的值相加后的结果赋值给变量sum;
2. sum+=i; //等价于sum=sum+i;
回复 使用道具 举报
没有什么不同,只是个人的写法不同

评分

参与人数 1黑马币 +3 收起 理由
苏波 + 3

查看全部评分

回复 使用道具 举报
基本没有什么不同,只是写法上有点区别而已。

评分

参与人数 1黑马币 +3 收起 理由
苏波 + 3

查看全部评分

回复 使用道具 举报
大部分情况是没区别的。但我有一个例子值得你注意一下的。。。
  1. short s1 = 1;s1=s1+1;//这是错的。

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

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

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

评分

参与人数 1黑马币 +3 收起 理由
苏波 + 3

查看全部评分

回复 使用道具 举报
没区别,sum+=i是sum=sum+i简写而已

评分

参与人数 1黑马币 +3 收起 理由
苏波 + 3

查看全部评分

回复 使用道具 举报
苏冉 中级黑马 2013-3-24 22:13:19
7#
计算结果都一样的  没有实质性区别  sum+=i似乎可以缩短运行时间

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
张振 中级黑马 2013-3-24 22:15:50
8#
没有区别 两种写法  sum+=i 提高vs运行效率,反正视频上老师说鼓励这样写

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
一般情况没有区别,但是要注意一点儿,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);
        }
}

评分

参与人数 1黑马币 +3 收起 理由
苏波 + 3

查看全部评分

回复 使用道具 举报
其结果都是一样,但是老师说过,在一般情况下最好用sum+=i,这样可以提高运行效率,
sum=sum+i;//是把sum+i赋值给了sum。、
sum+=i;//是等于直接改变了变量的值。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
sum=sum+i;//遵循自左向右赋值原则;
sum+=i;//是规定,就是当自己参与运算然后赋值给自己的时候使用的+-*/都适用。
回复 使用道具 举报
都一样,自己喜欢怎么写,就咋写!
回复 使用道具 举报
计算机科学特有,简化,节约,效率,二者在运行时无区别
回复 使用道具 举报
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赋值时,自动完成了强转操作。
  
回复 使用道具 举报
没区别,等价
回复 使用道具 举报
sum+=i 比sum=sum+i 的运算效率高点,其他没什么区别
回复 使用道具 举报
都是一样的,相等
回复 使用道具 举报
没区别,只是写法不一样而已!
回复 使用道具 举报
有区别,sum=sum+i 进行两次运算,而sum+=i只是进行一次赋值运算
回复 使用道具 举报
毕老师的视频里就特别讲了这个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马