为了账号安全,请及时绑定邮箱和手机立即绑定

a++、++a、a+=1和a=a+1?

a++、++a、a+=1和a=a+1?

fafagagag 2016-07-22 02:31:47
Java中,a++、++a、a+=1这3个和a=a+1有区别吗(a++和++a区别不用说了)?如果这3个和a=a+1有区别,那么,什么情况下分别使用效果会不一样?最好可以附上例子,谢谢!
查看完整描述

4 回答

?
mtexiy_Sss

TA贡献5条经验 获得超3个赞

a=a+1,是先取a的值,在进行加加操作。它等同于a++;
a+=1,是先对a进行加1操作,在返回a的值。它等同于++a;

另外

a++ 直接对内存中的值进行加1并且将结果写入内存,更效率
a=a+1  先申请一块内存空间,分别把变量a 和常量1 放入累加器中计算后,再把结果放到内存中.

最后,这三类指令在编译成汇编指令的时候也会有一定的差异,导致运行效率的变化,有兴趣可以去尝试一下。

查看完整回答
2 反对 回复 2016-07-22
?
最终幻想ssd

TA贡献4条经验 获得超2个赞

a+=1和a=a+1基本没区别,a++ 和 ++a和a=a+1的区别是a++是先参加程序的运行再+1,而++a则是先+1再参加程序的运行。

举个例子来说:

 a=2;  b = a++;    运行后: b = 2,a =3 

 a=2;  b = ++a;    运行后: b = 3,a =3; 


查看完整回答
2 反对 回复 2016-07-22
  • 看风景非凡
    看风景非凡
    说的很正确,补充一点,a+=1和a=a+1就像幻想说的基本没区别,唯一的一点区别就是a+=1带有隐含的强制类型转换,而a=a+1却没有,因为1是int型,如果a也是int行好,但如果它是short类型的,a=a+1就无法编译,而a+=1却可以正确编译,它相当于a = (short)(a+1)。
?
Dp_Dp

TA贡献1条经验 获得超1个赞

a += 1; 这个和 a = a +1 ; 这两个是一样的 只不过一个是简写

++a  和   a++  这两个区别在于运算的先后  比如   b = ++a;   这个是a先自增 然后才赋值    

b = a++; 这个是先赋值 后自增

查看完整回答
1 反对 回复 2016-07-22
?
KXFT

TA贡献113条经验 获得超58个赞

++a和a=a+1的关系就相当于a++和++a的关系,其他的没有什么区别,都是更加简洁的写法

查看完整回答
反对 回复 2016-07-22
  • 4 回答
  • 1 关注
  • 4900 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信