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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张迁 中级黑马   /  2013-4-24 00:37  /  2494 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张迁 于 2013-4-24 09:43 编辑

大学里面学习过 b=a++,可以解释为先是 b =a;再是a=a+1;那对于a=a++在内存中是怎么运算的呢?

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 新手鼓励一个!

查看全部评分

12 个回复

倒序浏览
本帖最后由 钟伟杰 于 2013-4-24 02:14 编辑

a=a++;运算过程中java会开辟一块新的内存存放a原来的值。
最后执行赋值操作的时候也是将这块新开的内存中的值赋给了原来的内存。

从执行顺序上看:因为++在后面,所以先使用a,“使用”的含义就是a++这个表达式的值是0,
               但是并没有做赋值操作,它在整个语句的最后才做赋值,也就是说在做了++操作后再赋值的。

举个例子吧:
int a = 0;//这个没什么说的
a = a++;//等效于下面的语句:


int temp =a;//这个temp就是a++这个表达式的值
a++; //i自增
a = temp;//最终,将表达式的值赋值给i

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
对于初学者,自加自减,在赋值的语句当中,如果是b=a++,写在后面就是先赋值,后++,
写在前面的时候b=++a;就是先加后赋值。
所以我一直这样记:
先者先加,后者后加。
意思就是放到前面我就先加,放到后面我就赋值完了以后再加。
希望我的回答对你有帮助。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
a++,当运行这语句时,使用的是未变化的a,使用完之后,这哥们就发现后面有个++,那就+1,下次使用时,就会之后+1之后的值;
++a, 在使用他时,这哥们发现有个++在自己前面,对电脑说,等一哈,等我+1个再用。所以使用的是+1之后的值。
回复 使用道具 举报
其实最简单的方法就是,加号在变量后,就是变量先参加运算,参加完运算后,在自己在加1,a++,
加号在变量前,先自己加1后,变量在参加运算,++a。
回复 使用道具 举报
其实最简单的方法就是,加号在变量后,就是变量先参加运算,参加完运算后,在自己在加1,a++,
加号在变量前,先自己加1后,变量在参加运算,++a。
回复 使用道具 举报
张迁 中级黑马 2013-4-24 09:34:17
7#
钟伟杰 发表于 2013-4-24 02:12
a=a++;运算过程中java会开辟一块新的内存存放a原来的值。
最后执行赋值操作的时候也是将这块新开的内存中的 ...

嗯,我自己想的时候,让电脑执行几次a=a++;结果输出a不变,你这样说我就彻底明白了,谢谢哈!
回复 使用道具 举报
张迁 中级黑马 2013-4-24 09:34:48
8#
ゞSunペ果果つ 发表于 2013-4-24 07:11
对于初学者,自加自减,在赋值的语句当中,如果是b=a++,写在后面就是先赋值,后++,
写在前面的时候b=++a; ...

嗯,我记住了,谢谢哈!
回复 使用道具 举报
张迁 中级黑马 2013-4-24 09:35:36
9#
李德全 发表于 2013-4-24 08:44
a++,当运行这语句时,使用的是未变化的a,使用完之后,这哥们就发现后面有个++,那就+1,下次使用时,就会 ...

哈哈,这是最有效的理解方式!
回复 使用道具 举报
harborbest 发表于 2013-4-24 08:50
其实最简单的方法就是,加号在变量后,就是变量先参加运算,参加完运算后,在自己在加1,a++,
加号在变量 ...

嗯,我明白了,谢谢哈!
回复 使用道具 举报
张迁 发表于 2013-4-24 09:35
哈哈,这是最有效的理解方式!

嘻嘻 俺也是新手:lol
回复 使用道具 举报
int a=0; a=a++;的实际执行顺序是: 1.分配一块内存空间(假定为A)给a,赋值为0; 2.为了执行a++,分配一块新的内存空间(假定为B)作为暂存区,用来存储a的  原始值(即0) 3.对A空间中的a进行+1运算,此时A空间的值为1 4.由于是a=a++,即等号右边要取a+1之前的原始值,于是取出B空间的值,赋值  给A中的a,即A中本来已经变成1的a又被改成了0
回复 使用道具 举报
李德全 发表于 2013-4-24 08:44
a++,当运行这语句时,使用的是未变化的a,使用完之后,这哥们就发现后面有个++,那就+1,下次使用时,就会 ...

有老毕的语气啊,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马