public class Main{
public void a(){
int i=9; //之所以用9,不用0或者1是爲了區別索引值。
int j=i;
}
public void b(){
int i=9;
int j=i++;
}
public void c(){
int i=9;
int j=++i;
}
}
這段代碼編譯後 javap -c Main.class 然後會生成
Compiled from "Main.java"
public class Main {
public Main();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public void a();
Code:
0: bipush 9 //將常量9壓入棧頂。
2: istore_1 //將棧頂元素彈出到本地局部變量第一個。也就是把9賦值給i。
3: iload_1//把本地局部變量壓入棧頂。
4: istore_2//把棧頂元素彈出到本地局部變量第二個也就是j。
5: return
public void b();
Code:
0: bipush 9 //將常量9壓入棧頂。
2: istore_1//將棧頂元素彈出到本地局部變量第一個。也就是把9賦值給i。
3: iload_1//把本地局部變量壓入棧頂。
4: iinc 1, 1//對本地第1個局部變量進行加1操作。也就是把i變成了10.
7: istore_2//把棧頂元素彈出到本地局部變量第二個也就是j。
8: return
public void c();
Code:
0: bipush 9 //將常量9壓入棧頂。
2: istore_1/將棧頂元素彈出到本地局部變量第一個。也就是把9賦值給i。
3: iinc 1, 1//對本地第1個局部變量進行加1操作。也就是把i變成了10.
6: iload_1//把本地局部變量壓入棧頂。也就是10壓入棧頂。
7: istore_2//把棧頂元素彈出到本地局部變量第二個也就是j。
8: return
}
圖解i++和++i
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.