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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sl123 中级黑马   /  2015-8-12 23:18  /  616 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int a=2;
a=a++;
System.out.println(a);
这个结果为什么是2呢?a赋值完后,不是还进行自增运算了吗?
自增后a就变为3了,为什么打印是2呢?

14 个回复

倒序浏览
先赋值后再自加,去论坛看看吧,我发了一个帖子就说这个的
回复 使用道具 举报
a=++a  的结果才为3!
回复 使用道具 举报
第一次执行 a=a++,先把右面的a赋值给了左边的a,a为2,之后a自加1之后,没有再次赋值给a了,a已经被赋过一次值了,要是改成b=a++,a自加1之后,赋值给了a,a就是3了
回复 使用道具 举报
要分清是先运算的是什么 。
回复 使用道具 举报 1 0
楼上正解0.0
回复 使用道具 举报
cc3441251 来自手机 中级黑马 2015-8-13 14:57:12
7#
这个确实容易出错,正好在看这一部分
回复 使用道具 举报
后置++,会产生一个临时的量,这个量的值相当于a的一个副本,然后将a的值自增1,将副本的值返回
回复 使用道具 举报
先搞清运算符优先级
回复 使用道具 举报
5楼正解, 这题常考唷
回复 使用道具 举报
当++写在了后面的时候,a原来的值先进性赋值运算,然后再对自身+1.如果在是++a,则本身先+1,然后进行复制运算。如果要打印出3,就得这样写:a=++a;

评分

参与人数 1黑马币 +4 收起 理由
sufly + 4 赞一个!

查看全部评分

回复 使用道具 举报
其实楼上的说法随然可以理解,但是思想是错误的!这个涉及到了内存!楼主可以看看老毕的视频,里面就专业的讲解!
回复 使用道具 举报
这个是个挺复杂的问题建议不要深究记住就好
回复 使用道具 举报
陈cc 中级黑马 2015-8-13 22:48:31
14#
学习了!!!!!!!!
回复 使用道具 举报
a++是先赋值在自增,所以还是2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马