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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

25 个回复

倒序浏览

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

int count=0;
count=++count;//count=1;
++count是先加1,再赋值。
回复 使用道具 举报 1 0
fulq1234 发表于 2016-9-21 13:31
int count=0;
count=count++;//count=0。
count++是先赋值,然后加1

这个我是知道的,但是count++赋值完了加1,为什么没有自身加1呢
回复 使用道具 举报
count++ 本身的值就是count
但是count经过后++后它本身的值却变了
回复 使用道具 举报
因为count=count++; 你这里得到的结果已经重新复制给count
回复 使用道具 举报
昨天刚研究完这个地方,count=count++先把 count的值(此时count=0)存在一个临时区域,然后++(此时count=1),然后再把临时区域的值赋给左边的count, 所有count 又变回了0, 所以怎么循环count 都是0.
回复 使用道具 举报 2 0
因为count++ , ++在后面 会先进行赋值  在自身加1 所以count++赋值给count的是0 , 所以最后输出count结果会是0.
回复 使用道具 举报
++在前面是在使用之前自增1, 在后面 是使用之后才自增。
回复 使用道具 举报
给你推荐本书 深入了解java虚拟机
回复 使用道具 举报
前++是先自增 再使用  后++是先使用原值再自增
回复 使用道具 举报
hy000936 发表于 2016-9-21 21:02
昨天刚研究完这个地方,count=count++先把 count的值(此时count=0)存在一个临时区域,然后++(此时count=1),然 ...

听你这么讲了一下,想通了
回复 使用道具 举报
2楼说的对!
回复 使用道具 举报
count=count++;是将表达式count++的值赋给count,表达式count++的值是0,count先自增1,然后又被count++的值覆盖,所以赋给count的值就是0
回复 使用道具 举报 1 0
minhang0902 来自手机 中级黑马 2016-9-22 12:35:47
14#
好绕啊
回复 使用道具 举报
好神奇哦
回复 使用道具 举报
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
回复 使用道具 举报 1 0
fulq1234 发表于 2016-9-23 09:46
你可以理解成count先赋值给一个临时变量,然后count自己加一.最后count等于这个临时变量的值。
          ...

很形象!
回复 使用道具 举报
原来是这么回事,茅塞顿开
回复 使用道具 举报
在前  先自增  再运算.
在后 先运算 再自增.
单独的话 都一样.
回复 使用道具 举报
++在前面,先自加,在拿他运算,如果++在后边,那就是先拿他运算,在++,不用纠结,用多了就 会明白的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马