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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int i=2;
i=i++;
System.out.println(i);
一定会有很多人给出的答案是:3
正确答案却是:2

解释:++或--运算会在最终的赋值操作之前完成,i=i++;这句代码会先判断出=右边的表达式最终的值是多少,这里最终应该赋值给左边的值是2;然后i++再进行自增;此时,在i++自增之前,右边的表达式已经得出了结果(要赋值给等号左边的i),并存储在临时的内存区域;i++后,i=3,但是最终赋值给i的仍然是2。

结论:自增或自减(i++或i--)运算会在最终赋值操作之前完成。

34 个回复

正序浏览
高深莫测,尽不知道
回复 使用道具 举报
真的是挺冷的呢 aaa
回复 使用道具 举报
嗯  不错  今晚刚好在为这道题困惑
回复 使用道具 举报
x=x++;这种很恶心。。
回复 使用道具 举报
这个和字符串在方法中引用很相似,都是用临时变量指向,原来的变量指向都是一样的,在方法中多态形参也有这种情况
回复 使用道具 举报
等同进行了两次赋值么?
回复 使用道具 举报
你不说还真不知道,还真以为是3
回复 使用道具 举报
感谢分享.
回复 使用道具 举报
果然够冷的
回复 使用道具 举报
越基础越不简单
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
基础知识一个。
回复 使用道具 举报
妖目 来自手机 中级黑马 2015-4-21 22:40:38
23#
涨姿势啦
回复 使用道具 举报
说实话我没看懂,但是这里的i++是没起作用吧,后面调用i他就是2,不是3
回复 使用道具 举报
确实冷,我第一眼就看错了
回复 使用道具 举报
我喜欢,请大家鼓掌支持,谢谢
回复 使用道具 举报
这个虽然是基础的东西,但很容易搞错
回复 使用道具 举报
确实不知道
回复 使用道具 举报
冷但是很实用。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马