i=i++

来源:互联网 发布:悉尼大学 住宿 知乎 编辑:程序博客网 时间:2024/05/16 19:27

今天阅读《编写高质量代码:改善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++。
主要是提下醒,有些难以解释的简单代码,看看代码的反编译文件,有可能就解决了。

原创粉丝点击