java文件
package com.netty.rpc.constant;
public class ClassAnalyze {
private int num = 1;
private int age = 2;
public int add() {
num += 2;
return num;
}
}
class文件
cafe babe 魔术数字
0000 0034 jdk编译版本
0016 常量个数
--------------以下为常量值---------
0a 0005 0011
09 0004 0012
09 0004 0013
07 0014
07 0015
01 0003 6e75 6d
01 0001 49
01 0003 6167 65
01 0006 3c69 6e69 743e
01 0003 28 2956
01 0004 43 6f64 65
01 000f 4c69 6e65 4e75 6d62 6572 5461 626c 65
01 0003 6164 64
01 0003 2829 49
01 000a 536f 7572 6365 4669 6c65
01 0011 43 6c61 7373 416e 616c 797a 652e 6a61 7661
0c 0009 000a
0c 0006 0007
0c 0008 0007
01 0023 636f 6d2f 6e65 7474 792f 7270 632f 636f 6e73 7461 6e74 2f43 6c61 7373 416e 616c 797a 65
01 0010 6a61 7661 2f6c 616e 672f 4f62 6a65 6374
0021 访问控制 access_flag
0004 this_class
0005 super_class
0000 interface_count
0002 field_count
0002 0006 0007 0000 字段一
0002 0008 0007 0000 字段二
0002 方法个数
---------以下是方法的分析,省略暂时不关注
0001 0009 000a 0001 000b 0000 002f 0002 0001 0000 000f 2ab7
0001 2a04 b500 022a 05b5 0003 b100 0000
0100 0c00 0000 0e00 0300 0000 0300 0400
0500 0900 06
0001 000d 000e 00 0100 0b00
0000 2b00 0300 0100 0000 0f2a 59b4 0002
0560 b500 022a b400 02ac 0000 0001 000c
0000 000a 0002 0000 0008 000a 000a 0001
000f 0000 0002 0010
javap -v 反编译文件
Classfile /Users/lebron374/Desktop/ClassAnalyze.class
Last modified 2020-5-17; size 360 bytes
MD5 checksum aefdcc3c97d1765618715b7bf306cd10
Compiled from "ClassAnalyze.java"
public class com.netty.rpc.constant.ClassAnalyze
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #5.#17 // java/lang/Object."<init>":()V
#2 = Fieldref #4.#18 // com/netty/rpc/constant/ClassAnalyze.num:I
#3 = Fieldref #4.#19 // com/netty/rpc/constant/ClassAnalyze.age:I
#4 = Class #20 // com/netty/rpc/constant/ClassAnalyze
#5 = Class #21 // java/lang/Object
#6 = Utf8 num
#7 = Utf8 I
#8 = Utf8 age
#9 = Utf8 <init>
#10 = Utf8 ()V
#11 = Utf8 Code
#12 = Utf8 LineNumberTable
#13 = Utf8 add
#14 = Utf8 ()I
#15 = Utf8 SourceFile
#16 = Utf8 ClassAnalyze.java
#17 = NameAndType #9:#10 // "<init>":()V
#18 = NameAndType #6:#7 // num:I
#19 = NameAndType #8:#7 // age:I
#20 = Utf8 com/netty/rpc/constant/ClassAnalyze
#21 = Utf8 java/lang/Object
{
public com.netty.rpc.constant.ClassAnalyze();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_1
6: putfield #2 // Field num:I
9: aload_0
10: iconst_2
11: putfield #3 // Field age:I
14: return
LineNumberTable:
line 3: 0
line 5: 4
line 6: 9
public int add();
descriptor: ()I
flags: ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
0: aload_0
1: dup
2: getfield #2 // Field num:I
5: iconst_2
6: iadd
7: putfield #2 // Field num:I
10: aload_0
11: getfield #2 // Field num:I
14: ireturn
LineNumberTable:
line 8: 0
line 10: 10
}
SourceFile: "ClassAnalyze.java"
参考文章
网友评论