今天阅读《编写高质量代码:改善Java程序的151个建议》,有一个很有趣的问题,i++ 与 i= i++居然不一样。(见书 建议7 自增的陷阱)
书中解释了一番,不满意,凭什么你这么解释就是对的?
后来,百度的时候有人提到源码,可是又是栈,又是堆的,太底层了,让小白难以接受。
然后就直接在idea中,敲了下demo,然后看输出的.clss反编译文件,豁然开朗。
代码如下:
public class Demo {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 10; i++) {
count = count++;
System.out.println(count);
}
System.out.println("end: "+count);
}
}
idea 的反编译文件:
由反编译文件可以清晰的发现,为什么Java中 i= i++。
主要是提下醒,有些难以解释的简单代码,看看代码的反编译文件,有可能就解决了。