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 个回复

倒序浏览
确实够冷。。。
回复 使用道具 举报
你去c语言试试 i=3
回复 使用道具 举报
多谢分享~
回复 使用道具 举报
哔哩哔哩  这是最基础的东西
回复 使用道具 举报
君嘘 发表于 2015-4-19 03:58
你去c语言试试 i=3

是么,C不清楚,编译器不一样,即使是java编译器也有很多版本吧,结果是啥完全取决于编译器
回复 使用道具 举报
bianzhiguo6 发表于 2015-4-19 15:26
哔哩哔哩  这是最基础的东西

刘意老师的视频没提到过这个,很容易漏掉,正常的出题都是m=i++这种格式,所以完全没考虑到自增跟赋值的先后顺序,我也是看到别人问老师这种题才注意到的
回复 使用道具 举报
b=a++,毕老师的比喻就是a先出去玩,在回家吃饭
b=++a,a先在家吃饭,再出去玩
回复 使用道具 举报
同感.........
回复 使用道具 举报
不管最后懂不懂事怎样的一个顺序,反正是知道答案了,以后最起码会注意到.感谢楼主分享.
回复 使用道具 举报
先用后加  先加后用
回复 使用道具 举报
Zack 中级黑马 2015-4-19 21:30:27
12#
本帖最后由 Zack 于 2015-4-19 21:32 编辑

没想到这样!
回复 使用道具 举报
System.out.println(i++);就是这意思
回复 使用道具 举报
哔哩哔哩 发表于 2015-4-19 18:58
刘意老师的视频没提到过这个,很容易漏掉,正常的出题都是m=i++这种格式,所以完全没考虑到自增跟赋值的 ...

好吧,赞一个。
回复 使用道具 举报
-30度.....
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
冷但是很实用。
回复 使用道具 举报
确实不知道
回复 使用道具 举报
这个虽然是基础的东西,但很容易搞错
回复 使用道具 举报
我喜欢,请大家鼓掌支持,谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马