javap(反汇编命令)

时间:2024-10-01 20:03:38

用法: javap <options> <classes>

其中, 可能的选项包括:

-help  --help  -?        输出此用法消息

-version                 版本信息

-v  -verbose             输出附加信息

-l                       输出行号和本地变量表

-public                  仅显示公共类和成员

-protected               显示受保护的/公共类和成员

-package                 显示程序包/受保护的/公共类

和成员 (默认)

-p  -private             显示所有类和成员

-c                       对代码进行反汇编

-s                       输出内部类型签名

-sysinfo                 显示正在处理的类的

系统信息 (路径, 大小, 日期, MD5 散列)

-constants               显示最终常量

-classpath <path>        指定查找用户类文件的位置

-cp <path>               指定查找用户类文件的位置

-bootclasspath <path>    覆盖引导类文件的位置

public class TestMain {
public static void main(String[] args){
short a = 4;
int b = 5;
a+=b; System.out.println(a);
}
}

javac TestMain.java

javap -c -l TestMain

www:faj faunjoe$ javap -c -l TestMain
警告: 二进制文件TestMain包含com.faj.TestMain
Compiled from "TestMain.java"
public class com.faj.TestMain {
public com.faj.TestMain();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 7: 0 public static void main(java.lang.String[]);
Code:
0: iconst_4
1: istore_1
2: iconst_5
3: istore_2
4: iload_1
5: iload_2
6: iadd
7: i2s
8: istore_1
9: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
12: iload_1
13: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
16: return
LineNumberTable:
line 9: 0
line 10: 2
line 11: 4
line 14: 9
line 15: 16
}