public static void main(String[] args){
int c = 2;
// c=c++; //这样赋值后,c仍然是2
c++; //这样后 就是3
System.out.println(c);
}
反汇编bytecode
/* c=c++
0 iconst_2
1 istore_1
2 iload_1 ;此处加载到栈顶的就是 2
3 iinc 1 by 1 ;这里没有操作栈顶. 直接把loca变量加了1 此时局部变量是3了.
6 istore_1 ;这里被覆盖成栈顶的2了..
7 getstatic #4 <java/lang/System.out>
10 iload_1 ;传参 a
11 invokevirtual #5 <java/io/PrintStream.println>
14 return
* */
/* 直接c++
0 iconst_2
1 istore_1
2 iinc 1 by 1
5 getstatic #4 <java/lang/System.out>
8 iload_1 ;传参 a
9 invokevirtual #5 <java/io/PrintStream.println>
12 return
* */
网友评论