代码如下,
编译成字节码后可以看出 不同点
// 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