VMware|Java培训:javap使用展开—Java类文件中隐藏了什么

VMware|Java培训:javap使用展开—Java类文件中隐藏了什么

文章图片


作为Java开发工具包(JDK)的一部分 , 我们可以使用许多工具来帮助更好地理解Java代码 。 其中一个工具是javap命令 , 它为我们提供了Java类文件的后台传递 。 想对java有更深入的了解 , 可以参加java培训 , 有助于进一步提升java知识和技能 。
在下面的文章中 , 我们将了解javap , 了解它如何帮助我们 , 以及我们如何使用它 。
什么是javap?
javap是一个反汇编Java类文件的命令行工具:它分解我们的类文件 , 并揭示其中的内容 。 该工具将二进制格式的类文件转换为人类可读的代码 。 javap提供了许多输出 , 它们根据我们感兴趣的数据而有所不同 。 默认情况下 , javap打印每个类的非私有成员的声明 。
至于javap中的p代表什么 , 所有证据都指向“prints” , 因为javap命令打印出类中的字节码 。 使用javap的一个好方法是探索异常 。
在类中使用javap
现在我们知道了javap是什么 , 是时候在我们的代码中尝试使用它了 。 关于javap的使用技巧 , 也可以在java培训中获得学习 。 我们通过键入命令、选择选项并添加类名来实现:

javap[options
类名
正如我们指出的 , 我们也可以称之为标志的选项将决定我们的输出 , 可以从许多标志中进行选择 , 包括:
-l–打印行和局部变量表
-public–仅显示公共类和成员
-protected–仅显示受保护的和公共的类和成员
-package–仅显示package、protected和public类和成员
-p–显示所有类和成员
-Jflag–将标志直接传递给运行时系统
【VMware|Java培训:javap使用展开—Java类文件中隐藏了什么】-s–打印内部类型签名
-sysinfo–显示正在处理的类的系统信息(路径、大小、日期、MD5hash)
-constants–显示静态最终常数
-c–打印反汇编代码
-verbose–打印方法的堆栈大小、局部数和参数数
用javap潜入字节码
在我们列出了javap可以做什么之后 , 现在是时候了解它实际上是如何工作的了 。 为此 , 我们创建了一个名为ExampleClass的基本类:
现在让我们借助javap更深入地了解它 。 Java培训中也有很多关于javap的课程 , 感兴趣的同学可以报名学习一下 。 首先 , 我们将使用不带任何其他标志的javap命令来打印非私有成员 。 我们的产出是:
如你所见 , 这是我们原始代码的一个非常“简单”的视图 , 没有任何关于私有整数和逻辑的信息 。 这是一个好的开始 , 但如果我们想看得更深入呢?让我们尝试使用-c来打印反汇编代码:
现在我们有了一种可读形式的字节码 , 在这里我们可以识别我们的方法、整数、命令和字符串 , 还有更多 。

很多线在我们面前展开 , 我们可以看到以下几点:1.元数据–此类文件的位置、上次修改的时间以及具有唯一id的类hash
2.常量池–引用类文件结构及其子结构中的各种常量的结构表 。 它保存类、接口、类实例、字段名、字符串常量或数组的符号信息 。
3.字节码–用JVM可以“读取”的语言编写的指令集
它有什么好处?
Javap很酷 , 特别是如果你像我们一样是一个数据迷 , 并且想知道代码背后发生了什么 。 但是除了出色的代码探索冒险之外 , 它也非常有用 。 新手想要快速学习java , 参加java培训是一个很好的学习方法 , 有明确清晰的学习路线 , 有系统全面的教学课程 , 可以让你在短时间内学有所成 , 快速上岗 。