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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Java田鹏

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© Java田鹏 初级黑马   /  2016-3-22 23:20  /  509 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目如下:
int i = 100;
i = i++;
i = i++;
System.out.println(i);
为什么最终i是100,
不知道这样理解对吗?
首先i++表达式结果为100,i自身增加1,i=101,(i++)表达式赋值给i,最终i=100,
也就是说程序的运行顺序是(i++) →i自身自增→赋值运算,因为赋值是最后执行的,所以赋值动作覆盖了自增动作是吗?这样理解对不对,求大牛详解

7 个回复

倒序浏览
i++是先给=左边的i赋值,再自增,换成++i就行了。
回复 使用道具 举报
这涉及到内存的分配问题。java的编译器在遇到i++和i- -的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,i=i++的确是赋值动作覆盖了自增

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1 赞一个!

查看全部评分

回复 使用道具 举报
没错 ,是100,首先看你初始值,100,第一个i=i++,i的值为100,第二个i=i++,i还是先赋值再加,所以i还是100,不知道这么说你懂不懂?
回复 使用道具 举报
首先i++是先把值赋给左边,第一次运算左边的i为100,然后下边的i再先把值赋给左边  还是100
回复 使用道具 举报
i =i++,   i++,  i先赋值给左边的i,自身然后在自加1,++i是先自加在赋值
回复 使用道具 举报
i =i++ 先赋值给i  所以就是100
回复 使用道具 举报
先赋值再运算,i=i++;先把100赋值给i,然后再自增
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马