黑马程序员技术交流社区

标题: 一个关于++的问题,请大家指教!!! [打印本页]

作者: Young66329    时间: 2016-9-21 12:48
标题: 一个关于++的问题,请大家指教!!!
int count=0;
count=count++;
System.out.println(count);
结果是0,如果++放到前面是1,但是我想知道这个count在后台是怎么操作的?是在内存里面重新创建了一个count,原来的那个count给新的count赋值后释放了吗?还是其他原因呢?请大家指教一下!!!

作者: fulq1234    时间: 2016-9-21 13:31

int count=0;
count=count++;//count=0。
count++是先赋值,然后加1

int count=0;
count=++count;//count=1;
++count是先加1,再赋值。
作者: Young66329    时间: 2016-9-21 14:23
fulq1234 发表于 2016-9-21 13:31
int count=0;
count=count++;//count=0。
count++是先赋值,然后加1

这个我是知道的,但是count++赋值完了加1,为什么没有自身加1呢
作者: lixuelin    时间: 2016-9-21 14:53
count++ 本身的值就是count
但是count经过后++后它本身的值却变了
作者: 一半的留言    时间: 2016-9-21 16:42
因为count=count++; 你这里得到的结果已经重新复制给count
作者: hy000936    时间: 2016-9-21 21:02
昨天刚研究完这个地方,count=count++先把 count的值(此时count=0)存在一个临时区域,然后++(此时count=1),然后再把临时区域的值赋给左边的count, 所有count 又变回了0, 所以怎么循环count 都是0.
作者: 顺其自然吧    时间: 2016-9-21 21:38
因为count++ , ++在后面 会先进行赋值  在自身加1 所以count++赋值给count的是0 , 所以最后输出count结果会是0.
作者: 梦魇0023    时间: 2016-9-21 21:55
++在前面是在使用之前自增1, 在后面 是使用之后才自增。
作者: 冷冷冷白    时间: 2016-9-21 22:20
给你推荐本书 深入了解java虚拟机
作者: 20160917521    时间: 2016-9-21 22:22
前++是先自增 再使用  后++是先使用原值再自增
作者: Young66329    时间: 2016-9-22 09:51
hy000936 发表于 2016-9-21 21:02
昨天刚研究完这个地方,count=count++先把 count的值(此时count=0)存在一个临时区域,然后++(此时count=1),然 ...

听你这么讲了一下,想通了
作者: litianji2016    时间: 2016-9-22 11:29
2楼说的对!
作者: 读书可以当饭吃    时间: 2016-9-22 12:31
count=count++;是将表达式count++的值赋给count,表达式count++的值是0,count先自增1,然后又被count++的值覆盖,所以赋给count的值就是0
作者: minhang0902    时间: 2016-9-22 12:35
好绕啊
作者: wo1026756529    时间: 2016-9-22 19:23
好神奇哦
作者: fulq1234    时间: 2016-9-23 09:46
Young66329 发表于 2016-9-21 14:23
这个我是知道的,但是count++赋值完了加1,为什么没有自身加1呢

你可以理解成count先赋值给一个临时变量,然后count自己加一.最后count等于这个临时变量的值。
               int count=0;
                //count=count++;
                int temp=count;
                count++;
                count=temp;
                System.out.println(count);//0,count++是先赋值,然后加1
作者: Young66329    时间: 2016-9-24 08:43
fulq1234 发表于 2016-9-23 09:46
你可以理解成count先赋值给一个临时变量,然后count自己加一.最后count等于这个临时变量的值。
          ...

很形象!
作者: litianji2016    时间: 2016-9-24 15:53
原来是这么回事,茅塞顿开
作者: xianghui0521    时间: 2016-9-24 23:50
在前  先自增  再运算.
在后 先运算 再自增.
单独的话 都一样.
作者: 威威是超人    时间: 2016-9-24 23:54
++在前面,先自加,在拿他运算,如果++在后边,那就是先拿他运算,在++,不用纠结,用多了就 会明白的
作者: 江月念华    时间: 2016-9-24 23:59
嗯,都可以的
作者: haoge349    时间: 2016-9-25 00:04
我听到的解释是这样的, 先把count给存起来,等到右边运算结束后把这个值传给左边的变量,然后让count自加,加完后再执行传值操作,给左边的变量赋值,count++虽然执行了,但不是最后执行的,所以输出为0
作者: bluehat    时间: 2016-9-25 22:46
先++和后++,在前面就先+,后面就后+
作者: 逍遥荻花    时间: 2016-9-25 23:05
{:2_30:}我也只能发表一个表情了 看到大家都这么懂了
作者: Array先生    时间: 2016-9-25 23:10
答案是0
作者: itheima110    时间: 2016-10-3 23:27
++操作是在算术运算中实时生效的,并且在赋值操作之前就已经完成。




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