【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,最后返回副本的值)
在前置++和后置++ 效果相同的时候,最好使用前置++

浙公网安备 33010602011771号