程序1: public class iaaa { public static void main(String[] args) { int i = 4; i = i++; System.out.println(i); } } 反编译后的代码: public class iaaa extends java.lang.Object{ public iaaa(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_4 //4放到栈顶 1: istore_1 //将栈顶的值保存到局部变量1中,也就是i中 2: iload_1 //把i的值放到栈顶,也就是说此时栈顶的值是4 3: iinc 1, 1 //把局部变量1增加1,这个指令不会导致栈的变化 6: istore_1 //将栈顶的值保存到局部变量1中,也就是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 14: return } 输出结果:4 程序2: public class iaaa { public static void main(String[] args) { int i = 4; i = ++i; System.out.println(i); } } 反编译后的代码: public class iaaa extends java.lang.Object{ public iaaa(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_4 //4放到栈顶 1: istore_1 //将栈顶的值保存到局部变量1中,也就是i中 2: iinc 1, 1 //把局部变量1增加1,这个指令不会导致栈的变化,此时i为5 5: iload_1 //把i的值放到栈顶,也就是说此时栈顶的值是5 6: istore_1 //将栈顶的值保存到局部变量1中,也就是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 14: return } 输出结果:5