2020-10-13 一键查看Java字节码

2020-10-13  本文已影响0人  源码互助空间站

何为 Java 字节码?

Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。


图片.png

为什么要查看 Java 字节码

如果我们通过命令行来查看某个 class 的字节码文件的话,可以直接通过 javap 命令,不过这种方式太原始了,效率十分低,并且看起来不直观。
下面介绍两种使用 IDEA 查看类对应字节码文件的方式:

public class Main {
    public static void main(String[] args) {
        Integer i = null;
        Boolean flag = false;
        System.out.println(flag ? 0 : i);
    }
}

上面这段代码由于使用三目运算符不当导致诡异了 NPE 异常。为了搞清楚事情的原因,我们来看其对应的字节码。

使用 IDEA 自带功能查看Java字节码

图片.png
需要注意的是:查看某个类对应的字节码文件之前确保它已经被编译过。执行一次,不然报错
图片.png

稍等几秒钟之后,你就可以直观到看到对应的类的字节码内容了。

字节码文件.png
详细解释下就是:flag ? 0 : i 这行代码中,0 是基本数据类型 int,返回数据的时候 i 会被强制拆箱成 int 类型,由于 i 的值是 null,因此就抛出了 NPE 异常。

使用 IDEA 插件 jclasslib(推荐)查看Java字节码

使用 jclasslib 不光可以直观地查看某个类对应的字节码文件,还可以查看类的基本信息、常量池、接口、属性、函数等信息。

下载jclasslib 插件.png
安装完成之后,重启 IDEA。点击View -> Show Bytecode With jclasslib 即可通过jclasslib 查看某个类对应的字节码文件。
图片.png 使用jclasslib查看字节码.png
上一篇 下一篇

猜你喜欢

热点阅读