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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王安琪 中级黑马   /  2013-6-26 21:57  /  1099 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王安琪 于 2013-6-26 22:04 编辑
  1.       在定义一个i的时候如果写成  i=i++;与 i++;                                  i=i++;   i++;加的时候内存储存方式有什么不同?
复制代码

评分

参与人数 1黑马币 +10 收起 理由
张勇1993 + 10 神马都是浮云

查看全部评分

4 个回复

倒序浏览
回复 使用道具 举报
本帖最后由 ㄗs:/|丶hearts 于 2013-6-26 22:37 编辑

定义的时候?!是这样吗:int i = i++;    定义的时候这样写 肯定要报错的
运算的时候 int i=1;      
i++;  结果是i 自增1 ,i =2
i=i++; 先运算i++,这时候i =2 ,i++ 的值还是1;然后把i++的值(也就是1)赋给i, 最后结果还是i=1
回复 使用道具 举报
我的理解:
i=i++可以理解为右边因为运算符决定了这个i值有用处,所以自增之前就类似在内存中开辟了一个地方先保存i的值,然后i再自增,接着又把i值赋给i,就把刚才自增的给覆盖了,
temp=i--->i=i+1---->i=temp
而i++是自增


不知道我理解的对不对,毕老师的视频第二天15小节对这个问题讲的挺细的

评分

参与人数 1黑马币 +2 收起 理由
张勇1993 + 2 赞一个!

查看全部评分

回复 使用道具 举报
刚刚学会这个问题,比如 int i=t(t是一个数值);i=i++.这样的话,在程序到i=i++.处。java的编译器会动态分配一处内存存放i的原始值,然后i++(即i自加1),接下来编译器将存放的那个原始值赋予i(=左边的i),即此时i等于原始值(t),最后编译器就释放存放原始值的内存。所以最后i=t;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马