java里的i++与i=i++会有怎样的结果?JVM做了什么?

先来看下这段代码:

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

结果是什么呢?结果是10?不对,结果是0。为什么呢?
我们来看看i++Jvm做了什么。
步骤一:JVM将i的值,而不是引用,拷贝到临时变量区
步骤二:将count值加一
步骤三:返回临时变量区的值。
而i=i++;相当于多了一步,将i=i(这个"i"是临时变量区的值,为0),所以i=i++,在这里一直都是0。
所以i++是先返回值,再赋值。
而++i则相反。所以上面要返回想要的值,可以改为count++;或者count=++count;

猜你喜欢

转载自blog.csdn.net/qq_39837953/article/details/84871742
i++