【JAVA】++a与a++

先看一段程序:

public static void main(String[] args) {
   int count=0;
   for(int i=0;i<10;i++){
      count=count++;
   }
      System.out.println(count);
}

按照我以前的理解,这里的count应该等于10,但运行后竟然是等于0,在搜了很多文章之后,有点儿明白了。

count++是一个表达式,在运算时分为三步:

1.先创建一个与count相同的临时副本

2.count进行自增

3.返回第一步临时副本的值

也就是说在语句count=count++;中,虽然每次count都自增了,但又都被第三部返回的临时副本的值覆盖了,所以count一直是0.

 

a++和++a本质上的区别:

前置++不会产生临时对象  

后置++在返回时有一个临时对象的创建(a++ 相当与a先创建自身的一个副本,然后a自增1,最后返回副本的值)

在前置++和后置++ 效果相同的时候,最好使用前置++

(参考:http://blog.sina.com.cn/s/blog_6b51e9370100ya29.html)

posted @ 2016-08-31 15:42  清如许HG  阅读(247)  评论(0)    收藏  举报