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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 乐宝myhoney 于 2014-2-4 18:36 编辑

j=i++以及j=++i运行的时候,内存的分配流程图是如何进行的?烦请各位前辈予以解答,多谢!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

8 个回复

正序浏览
追逐 高级黑马 2014-3-14 15:04:42
9#
j=i++ 是(j = i,    i = i + 1)
j=++i 是(i = i + 1,   j = i);
i++是先把i的值赋值给变量j  , 然后在让j自增
++i是先把变量i自增。然后在把值赋值给变量j
回复 使用道具 举报
假设a=1,b=1; int c =a++;--》可以看成是int c=a;a=a+1;所以a=2;        int d =++b;--》可以看成是b=b+1=2;int d=b=2;就是这样的 你要了解那个i++跟++i这个,++如果在前面,则会先自加,然后赋值给其他变量,如果是在后边,则先把自己的值赋给其他变量,然后自己加1。这就是区别了。--跟++用法一样。
回复 使用道具 举报
j=i;i=i+1;     i=i+1;j=i;
回复 使用道具 举报
本帖最后由 杨殿生 于 2014-2-8 21:42 编辑

j=i++    是将i的值先赋给j,然后i自加1              j=++i    是i先自加1,然后再把值赋给j

回复 使用道具 举报
自增(前):i=2;j=++i;结果为i=3;j=3;
自增(后):i=2;j=++i;结果为i=3;j=2;
简单来记就是自增前是加完用,自增后是用完加;
无论自增前还是自增后i的输出值的加1.

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
i++是先赋值,再自增,++i 是先自增 再赋值
回复 使用道具 举报
只要记住++在前,先自增,然后将增加的值赋给左边.
++在后,将值赋给左边再自增.
比方int b = 0; b= b++; System.out.println(b);//b是0而不是1.因为++在后.若是在前就是1了.

评分

参与人数 1技术分 +1 收起 理由
黄晓东 + 1

查看全部评分

回复 使用道具 举报
j = i++;
<==>j = i + 1;i = i + 1;

j = ++i;
<==>i = i + 1; j = i;
拆分开应该就是上面的步骤,具体的流程图未知

评分

参与人数 1技术分 +1 收起 理由
黄晓东 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马