类文件结构-method-init和类文件结构-method-main
Method 信息
表示方法數量,本類為 2
0000660 29 56 00 21 00 05 00 06 00 00 00 00 00 02 00 01
一個方法由 訪問修飾符,名稱,參數描述,方法屬性數量,方法屬性組成
?? ?紅色代表訪問修飾符(本類中是 public)
?? ?藍色代表引用了常量池 #07 項作為方法名稱
?? ?綠色代表引用了常量池 #08 項作為方法參數描述
?? ?黃色代表方法屬性數量,本方法是 1
?? ?紅色代表方法屬性
?
?? ??? ?00 09 表示引用了常量池 #09 項,發現是【Code】屬性
?? ??? ?
?? ??? ?00 00 00 2f 表示此屬性的長度是 47
?? ??? ?
?? ??? ?00 01 表示【操作數棧】最大深度
?? ??? ?
?? ??? ?00 01 表示【局部變量表】最大槽(slot)數
?? ??? ?
?? ??? ?2a b7 00 01 b1 是字節碼指令
?? ??? ?
?? ??? ?00 00 00 02 表示方法細節屬性數量,本例是 2
?? ??? ?
?? ??? ?00 0a 表示引用了常量池 #10 項,發現是【LineNumberTable】屬性
?? ??? ?
?? ??? ??? ?00 00 00 06 表示此屬性的總長度,本例是 6
?? ??? ??? ?
?? ??? ??? ?00 01 表示【LineNumberTable】長度
?? ??? ??? ?
?? ??? ??? ?00 00 表示【字節碼】行號 00 04 表示【java 源碼】行號
?? ??? ??? ?
?? ??? ?00 0b 表示引用了常量池 #11 項,發現是【LocalVariableTable】屬性
?? ??? ?
?? ??? ??? ?00 00 00 0c 表示此屬性的總長度,本例是 12
?? ??? ??? ?
?? ??? ??? ?00 01 表示【LocalVariableTable】長度
?? ??? ??? ?
?? ??? ??? ?00 00 表示局部變量生命周期開始,相對于字節碼的偏移量
?? ??? ??? ?
?? ??? ??? ?00 05 表示局部變量覆蓋的范圍長度
?? ??? ??? ?
?? ??? ??? ?00 0c 表示局部變量名稱,本例引用了常量池 #12 項,是【this】
?? ??? ??? ?
?? ??? ??? ?00 0d 表示局部變量的類型,本例引用了常量池 #13 項,是【Lcn/itcast/jvm/t5/HelloWorld;】
?? ??? ??? ?
?? ??? ??? ?00 00 表示局部變量占有的槽位(slot)編號,本例是 0
?? ??? ??? ?
0000660 29 56 00 21 00 05 00 06 00 00 00 00 00 02 00 01
0000700 00 07 00 08 00 01 00 09 00 00 00 2f 00 01 00 01
0000720 00 00 00 05 2a b7 00 01 b1 00 00 00 02 00 0a 00
0000740 00 00 06 00 01 00 00 00 04 00 0b 00 00 00 0c 00
0000760 01 00 00 00 05 00 0c 00 0d 00 00 00 09 00 0
?? ?紅色代表訪問修飾符(本類中是 public static)
?? ?藍色代表引用了常量池 #14 項作為方法名稱
?? ?
?? ?綠色代表引用了常量池 #15 項作為方法參數描述
?? ?
?? ?黃色代表方法屬性數量,本方法是 2
?? ?
?? ?紅色代表方法屬性(屬性1)
?? ?
?? ??? ?00 09 表示引用了常量池 #09 項,發現是【Code】
?? ??? ?
?? ??? ?00 00 00 37 表示此屬性的長度是 55
?? ??? ?
?? ??? ?00 02 表示【操作數棧】最大深度
?? ??? ?
?? ??? ?00 01 表示【局部變量表】最大槽(slot)數
?? ??? ?
?? ??? ?00 00 00 05 表示字節碼長度,本例是 9
?? ??? ?
?? ??? ?b2 00 02 12 03 b6 00 04 b1 是字節碼指令
?? ??? ?
?? ??? ?00 00 00 02 表示方法細節屬性數量,本例是 2
?? ??? ?
?? ??? ?00 0a 表示引用了常量池 #10 項,發現是【LineNumberTable】
?? ??? ?
?? ??? ??? ?00 00 00 0a 表示此屬性的總長度,本例是 10
?? ??? ??? ?
?? ??? ??? ?00 02 表示【LineNumberTable】長度
?? ??? ??? ?
?? ??? ??? ?00 00 表示【字節碼】行號 00 06 表示【java 源碼】行號
?? ??? ??? ?
?? ??? ??? ?00 08 表示【字節碼】行號 00 07 表示【java 源碼】行號
?? ??? ??? ?
?? ??? ?00 0b 表示引用了常量池 #11 項,發現是【LocalVariableTable】屬性
?? ??? ?
?? ??? ??? ?00 00 00 0c 表示此屬性的總長度,本例是 12
?? ??? ??? ?
?? ??? ??? ?00 01 表示【LocalVariableTable】長度
?? ??? ??? ?
?? ??? ??? ?00 10 表示局部變量名稱,本例引用了常量池 #16 項,是【args】
?? ??? ??? ?
?? ??? ??? ?00 11 表示局部變量的類型,本例引用了常量池 #17 項,是【[Ljava/lang/String;】
?? ??? ??? ?
?? ??? ??? ?00 00 表示局部變量占有的槽位(slot)編號,本例是 0
?? ??? ??? ?
0000760 01 00 00 00 05 00 0c 00 0d 00 00 00 09 00 0e 00
0001000 0f 00 02 00 09 00 00 00 37 00 02 00 01 00 00 00
0001020 09 b2 00 02 12 03 b6 00 04 b1 00 00 00 02 00 0a
0001040 00 00 00 0a 00 02 00 00 00 06 00 08 00 07 00 0b
0001060 00 00 00 0c 00 01 00 00 00 09 00 10 00 11 00 00
紅色代表方法屬性(屬性2)
?? ?紅色代表方法屬性(屬性2)
?? ?
?? ??? ?00 00 00 05 表示此屬性的總長度,本例是 5
?? ??? ?
?? ??? ?01 參數數量
?? ??? ?
?? ??? ?00 10 表示引用了常量池 #16 項,是【args】
?? ??? ?
?? ??? ?00 00 訪問修飾符
?? ??? ?
0001100 00 12 00 00 00 05 01 00 10 00 00 00 01 00 13 00
0001120 00 00 02 00 14
?
總結
以上是生活随笔為你收集整理的类文件结构-method-init和类文件结构-method-main的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类文件结构-field
- 下一篇: 类加载-加载