Java i = i++ 原理解释

代码如下,


image.png

编译成字节码后可以看出 不同点

// i++  输出为0
0: iconst_0                             //把0入栈
1: istore_1                             //弹出栈顶,存入位置位1的局部变量中
    /*****/
2: iload_1                              //从位置位1的局部变量中取出元素入栈
3: iinc          1, 1                   //局部变量自增
    /****/
6: istore_1                             //弹出栈顶,存入位置为1的局部变量中 i = (i++); 运行等号 
7: getstatic     #2                     // Field java/lang/System.out:Ljava/io/PrintStream;
10: iload_1
11: invokevirtual #3                    // Method java/io/PrintStream.println:(I)V
// ++ i  输出为1
0: iconst_0                             //把0入栈
1: istore_1                             //弹出栈顶,存入位置位1的局部变量中
    /*****/
2: iinc          1, 1                   //局部变量自增
5: iload_1                              //从位置位1的局部变量中取出元素入栈
    /*****/
6: istore_1                             //弹出栈顶,存入位置为1的局部变量中  i = (++i); 运行等号
7: getstatic     #2                     // Field java/lang/System.out:Ljava/io/PrintStream;
10: iload_1
11: invokevirtual #3                    // Method java/io/PrintStream.println:(I)V

运行结果,i = i++最后为0,i = ++i最后为1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。