黑马程序员技术交流社区

标题: j=i++及j=++i运行时的内存模式流程图问题 [打印本页]

作者: 乐宝myhoney    时间: 2014-2-4 18:32
标题: j=i++及j=++i运行时的内存模式流程图问题
本帖最后由 乐宝myhoney 于 2014-2-4 18:36 编辑

j=i++以及j=++i运行的时候,内存的分配流程图是如何进行的?烦请各位前辈予以解答,多谢!
作者: 郭运川    时间: 2014-2-7 20:25
j = i++;
<==>j = i + 1;i = i + 1;

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

作者: ♫梦想起航♫    时间: 2014-2-8 05:45
只要记住++在前,先自增,然后将增加的值赋给左边.
++在后,将值赋给左边再自增.
比方int b = 0; b= b++; System.out.println(b);//b是0而不是1.因为++在后.若是在前就是1了.
作者: 嗯√低调〆    时间: 2014-2-8 13:10
i++是先赋值,再自增,++i 是先自增 再赋值
作者: 孔丽阁    时间: 2014-2-8 14:03
自增(前):i=2;j=++i;结果为i=3;j=3;
自增(后):i=2;j=++i;结果为i=3;j=2;
简单来记就是自增前是加完用,自增后是用完加;
无论自增前还是自增后i的输出值的加1.
作者: 杨殿生    时间: 2014-2-8 21:40
本帖最后由 杨殿生 于 2014-2-8 21:42 编辑

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


作者: copydong    时间: 2014-2-8 22:29
j=i;i=i+1;     i=i+1;j=i;
作者: 四季列车    时间: 2014-3-13 14:54
假设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。这就是区别了。--跟++用法一样。
作者: 追逐    时间: 2014-3-14 15:04
j=i++ 是(j = i,    i = i + 1)
j=++i 是(i = i + 1,   j = i);
i++是先把i的值赋值给变量j  , 然后在让j自增
++i是先把变量i自增。然后在把值赋值给变量j




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2