1、javap

      1.1  javap是JDK自带的反解析工具;

      1.2  作用:就是根据class字节码文件,反解析出    当前类   对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息;

      1.3  常用的命令:

            javap -c   

              对当前class字节码进行反编译生成汇编代码;

            javap -l

              会输出行号和本地变量表信息;

            javap -v 

              会输出行号、本地变量表信息、反编译汇编代码,还会输出当前类用到的常量池等信息;

      1.4  案例:

      

package yunsuanfu;

public class Test {

    public static void main(String[] args){
plusTest();
plusTestTwo();
} /**
* a++:先参与运算(System.out.println(a))、再进行自增(a++ 等效于a=a+1)
* ++a:先自增(a++),再参与运算(System.out.println(a))
*
* 结果是:9、11
*/
public static void plusTest(){
int a=9;
System.out.println(a++);
System.out.println(++a);
} /**
* y+=z--/++x 等效于 y=y+z--/++x y=2+3/2
*
* 结果是:3
*/
public static void plusTestTwo(){
int x=1,y=2,z=3;
System.out.println(y+=z--/++x);
}
}

  

javap -c Test.class

Compiled from "Test.java"
public class yunsuanfu.Test {
public yunsuanfu.Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return public static void main(java.lang.String[]);
Code:
0: invokestatic #2 // Method plusTest:()V
3: invokestatic #3 // Method plusTestTwo:()V
6: return public static void plusTest();
Code:
0: bipush 9
2: istore_0
3: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;
6: iload_0
7: iinc 0, 1
10: invokevirtual #5 // Method java/io/PrintStream.println:(I)V
13: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;
16: iinc 0, 1
19: iload_0
20: invokevirtual #5 // Method java/io/PrintStream.println:(I)V
23: return public static void plusTestTwo();
Code:
0: iconst_1
1: istore_0
2: iconst_2
3: istore_1
4: iconst_3
5: istore_2
6: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream;
9: iload_1
10: iload_2
11: iinc 2, -1
14: iinc 0, 1
17: iload_0
18: idiv
19: iadd
20: dup
21: istore_1
22: invokevirtual #5 // Method java/io/PrintStream.println:(I)V
25: return
}

  

JavaSE---JDK提供的命令行工具---javap的更多相关文章

  1. jdk 自带命令行工具

    jps工具 虚拟机进程状况工具 工具主要选项 jstat: 虚拟机统计信息监视工具 jinfo: Java配置信息工具 jinfo( Configuration Info for Java) 的作用是 ...

  2. JMeterPluginCMD命令行工具使用详解

    MeterPluginCMD命令行工具生成png图片和csv统计文件 Jmeter是个纯java的开源的轻量级性能测试工具,功能强大.因为是轻量级的,与loadrunner相比,报告统计的相对较少.不 ...

  3. 微软开放技术发布针对 Mac 和 Linux 的更新版 Azure Node.JS SDK 和命令行工具

    发布于 2013-12-04 作者 Eduard Koller 这次为我们使用Linux 的朋友带来了更多关于部署云上虚拟机的消息.今天,微软开放技术有限公司 (MS Open Tech),想与大家分 ...

  4. Windows2008安装组件命令行工具ServerManagerCmd用法介绍

    转自:http://blog.sina.com.cn/s/blog_537de4b5010128al.html Windows2008 安装组件服务等内容比原来复杂的多,用鼠标点来点去,既繁琐也缓慢, ...

  5. Scrapy命令行工具简介

    Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 在最初使用Scrapy时,使用编辑器或IDE手动编写模块来创建爬虫(Spide ...

  6. JDK的命令行工具系列 (二) javap、jinfo、jmap

    javap: 反编译工具, 可用来查看java编译器生成的字节码 参数摘要: -help 帮助 -l 输出行和变量的表 -public 只输出public方法和域 -protected 只输出publ ...

  7. JDK的命令行工具

    Jcmd:综合工具 jcmd -l  列出当前运行的所有虚拟机 参数-l表示列出所有java虚拟机,针对每一个虚拟机,可以使用help命令列出该虚拟机支持的所有命令 jcmd [pid] help j ...

  8. JVM-JDK命令行工具

    JDK命令行工具 当我们进入JDK的安装目录里面的/bin目录,会发现有很多小工具,有我们熟悉的也经常用的java,javac,也有很多我们不怎么用到很陌生的工具.下面看看哪些平时不怎么用到的工具吧. ...

  9. 虚拟机性能监控与故障处理工具------JDK的命令行工具

    ①jps:虚拟机进程状况工具 功能:列出正在运行的虚拟机进程,并显示1.虚拟机执行主类名称以及2.这些进程的本地虚拟机唯一ID(LVMID). 使用频率最高的JDK命令行工具,其他的JDK工具大多需要 ...

随机推荐

  1. vue组件传值之父传子

    1.父组件给子组件传值  home父组件  header子组件  关键字props home代码 <template> <div> <v-header :title=&q ...

  2. xiugai-去除js注释

    <div class="myLoading"> <div class="svg-wrap"> <svg width="8 ...

  3. Jenkins 添加新用户

    下面重点记录下jenkins安装后的一些配置: (1)添加用户权限 jenkins初次登陆后,要先注册一个用户作为管理员: 依次点击“系统管理”->“Configure Global Secur ...

  4. 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

    目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...

  5. Python模块学习之xlrd、xlutils、openpyxl 读写/追加Excel文件

    Python操作Excel的四个工具包 xlrd: 对Excel进行读相关操作,注意只能操作 .xls xlwt: 对Excel进行写相关操作,注意只能操作 .xls,且只能创建一个全新的Excel然 ...

  6. Vue过渡:JavaScript钩子

    一 App.vue <template> <div id="app"> <button @click="show = !show" ...

  7. 机器学习实战笔记-5-Logistic回归

    Logistic回归 优缺点 适用范围 优点:计算代价不高,易于理解和实现. 缺点:容易欠拟合,分类精度可能不高. 适用于:数值型和标称型数据. 仅用于二分类 原理: 每个特征都乘以一个回归系数> ...

  8. Struts2之动态方法调用

    1.感叹号 前台页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pa ...

  9. secureCRT安装,破解,连接linux机器(含安装包)

    1. 为什么需要安装secureCRT 我们的项目运行在服务器上,如果出现什么问题,或者升级的时候,需要对服务器进行操作,把处理好的项目发布到服务器上.如果我们就在服务器身边,那么直接在服务器上进行操 ...

  10. 2.etcd集群的安装(cfssl版)

    etcd的安装注意两点 1.systemd的配置文件   2. 证书 1. 解决 systemd的问题,想安装指定版本的etcd可以通过 yum方式安装 etcd 可以获得 systemc 和 etc ...