看了这个问题和大家的总结,我也很疑惑,然后又查了一些资料,想把这个问题的解释理一下!
1、a++:a先创建自身的一个临时副本,然后a自增1,最后返回副本的值。
++a:不会创建临时副本,直接返回a加1后的值。
2、- int count=0;
- count=count++;
复制代码 因为count++的优先级高于=,所以先计算count++,此时先在内存创建一个count的临时副本值为0,然后count加1,count的值为1。然后进行赋值运算,count++表达式返回副本里的值0,把0赋给count(此时count的值为1),结果count的值又变成0了。
下面这个程序很好的说明了问题:- class Demo
- {
- public static void main(String[] args)
- {
- int count=0,a=1;
- a=count++;//这里a的值会被count++表达式赋值为0(count++返回的是临时副本里的0, count的值变成了1)
- System.out.println("a="+a);
- System.out.println("count="+count);//这里输出count的值为1
- }
- }
复制代码 |