好吧,让我们看看字节码(用来自己看):javap -c <classname>
Compiled from "PostIncTest.java"
class myCounter extends java.lang.Object{
myCounter();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_1
6: putfield #2; //Field _ix:I
9: return
public int ixAdd();
Code:
0: aload_0
1: dup
2: getfield #2; //Field _ix:I
5: dup_x1
6: iconst_1
7: iadd
8: putfield #2; //Field _ix:I
11: ireturn
}
如您所见,中的指令 6 和 7 在返回之前处理增量。因此,正如我们所期望的那样,递减运算符在 return 语句中使用时确实会产生影响。但是,请注意,在这两个出现之前有一个指令;递增的值(当然)不会反映在返回值中。ixAdd()
dup