Java 之 javap 命令

问:你知道 Java 怎么查看字节码吗,具体怎么使用呢?

答:可以使用 JDK 提供的 javap 命令,javap 是 Java class 文件分解器,可以反编译(即对 javac 编译的文件进行反编译),也可以查看 java 编译器生成的字节码,用于分解 class 文件。

一般情况下,大家比较少见通过 javap 对 class 文件进行反编译,因为有很多成熟的反编译工具可以使用,比如 jad。但是 javap 还可以查看 java 编译器为我们生成的字节码,通过它可以对照源代码和字节码,从而了解很多编译器内部的工作。

其具体使用流程就是先得到编译后的 class 文件,然后通过 javap 命令直接查看 class 文件即可,具体参数细节和想要通过 javap 分析什么可以通过 help 查看,如下:

javap -help
用法: javap  
其中, 可能的选项包括:
  -help  --help  -?        输出此用法消息
  -version                 版本信息
  -v  -verbose             输出附加信息
  -l                       输出行号和本地变量表
  -public                  仅显示公共类和成员
  -protected               显示受保护的/公共类和成员
  -package                 显示程序包/受保护的/公共类
                           和成员 (默认)
  -p  -private             显示所有类和成员
  -c                       对代码进行反汇编
  -s                       输出内部类型签名
  -sysinfo                 显示正在处理的类的
                           系统信息 (路径, 大小, 日期, MD5 散列)
  -constants               显示静态最终常量
  -classpath         指定查找用户类文件的位置
  -bootclasspath     覆盖引导类文件的位置

有了它你在很多时候就不用再和别人争得脖子脸通红了,对方和你争论有些写法或者问题时你只用 javap 分析下字节码实现,然后向对方脸上一甩,技能 plus++。

可以说 javap 不仅是很多情况下分析问题的利器,也是自己透过 java 代码研读背后实现的一个有利工具,务必掌握。

推荐 javap,java 代码背后的真相只有一个!

你可能感兴趣的:(Java 之 javap 命令)