设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2420|回复: 0
打印 上一主题 下一主题

JAVAP:通过javap命令了解编译器工作原理

[复制链接]

219

主题

221

帖子

1418

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1418

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 2016-8-14 21:08:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
javap 是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。
语法:
  javap [ 命令选项 ] class. . .
  javap 命令用于解析类文件。其输出取决于所用的选项。若没有使用选项,javap 将输出传递给它的类的 public 域及方法。javap 将其输出到标准输出设备上。
选项:
  -help 输出 javap 的帮助信息。
  -l 输出行及局部变量表。
  -b 确保与 JDK 1.1 javap 的向后兼容性。
  -public 只显示 public 类及成员。
  -protected 只显示 protected 和 public 类及成员。
  -package 只显示包、protected 和 public 类及成员。这是缺省设置。
  -private 显示所有类和成员。
  -J[flag] 直接将 flag 传给运行时系统。
  -s 输出内部类型签名。
  -c 输出类中各方法的未解析的代码,即构成 Java 字节码的指令。
  -verbose 输出堆栈大小、各方法的 locals 及 args 数,以及class文件的编译版本
  -classpath[路径] 指定 javap 用来查找类的路径。如果设置了该选项,则它将覆盖缺省值或 CLASSPATH 环境变量。目录用冒号分隔。
   -bootclasspath[路径] 指定加载自举类所用的路径。缺省情况下,自举类是实现核心 Java 平台的类,位于 jrelib下面。
    -extdirs[dirs] 覆盖搜索安装方式扩展的位置。扩展的缺省位置是 jrelibext。

英文说明:
C:\>javap -help
Usage: javap <options> <classes>...

where options include:
   -c                                   Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>              Override location of installed extensions
   -help                              Print this usage message
   -J<flag>                        Pass <flag> directly to the runtime system
   -l                                   Print line number and local variable tables
   -public                           Show only public classes and members
   -protected                     Show protected/public classes and members
   -package                       Show package/protected/public classes  and members (default)
   -private                         Show all classes and members
   -s                                  Print internal type signatures
   -bootclasspath              <pathlist> Override location of class files loaded by the bootstrap class loader
   -verbose                       Print stack size, number of locals and args for methods If verifying, print reasons for failure



1.先编写一个测试源码



[Java] 纯文本查看 复制代码
package com.jeestudy;

public class JAVAPTest {

        public static void main(String[] args) {
                int n = 0;
                for (int i = 0; i < 10; i++) {
                        n++;
                        
                        System.out.println(n);
                }
        }
}


2.执行JAVAP命令


知识改变命运!

JAVA EE 学习     JAVA EE 资料
JEE Study:企业级开发学习网!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2024-4-20 05:57 , Processed in 0.232429 second(s), 30 queries .

Powered by JeeStudy!

© 2008-2020 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表