hexdump -C filename可以查看二进制文件。

比如java的Test.java

public class Test{
public static void main(String[] args){
System.out.println("Hello World!");
}
}

1、hexdump

javac Test.java之后生成的Test.class,可以使用:

1.1 hexdump -C Test.class 

0000000  ca fe ba be 00 00 00 32  00 1d 0a 00 06 00 0f 09  |.......2........|
00000010 00 10 00 11 08 00 12 0a 00 13 00 14 07 00 15 07 |................|
00000020 00 16 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 |.....<init>...()|
00000030 56 01 00 04 43 6f 64 65 01 00 0f 4c 69 6e 65 4e |V...Code...LineN|
00000040 75 6d 62 65 72 54 61 62 6c 65 01 00 04 6d 61 69 |umberTable...mai|
00000050 6e 01 00 16 28 5b 4c 6a 61 76 61 2f 6c 61 6e 67 |n...([Ljava/lang|
00000060 2f 53 74 72 69 6e 67 3b 29 56 01 00 0a 53 6f 75 |/String;)V...Sou|
00000070 72 63 65 46 69 6c 65 01 00 09 54 65 73 74 2e 6a |rceFile...Test.j|
00000080 61 76 61 0c 00 07 00 08 07 00 17 0c 00 18 00 19 |ava.............|
00000090 01 00 0c 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 07 |...Hello World!.|
000000a0 00 1a 0c 00 1b 00 1c 01 00 04 54 65 73 74 01 00 |..........Test..|
000000b0 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 |.java/lang/Objec|
000000c0 74 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 79 |t...java/lang/Sy|
000000d0 73 74 65 6d 01 00 03 6f 75 74 01 00 15 4c 6a 61 |stem...out...Lja|
000000e0 76 61 2f 69 6f 2f 50 72 69 6e 74 53 74 72 65 61 |va/io/PrintStrea|
000000f0 6d 3b 01 00 13 6a 61 76 61 2f 69 6f 2f 50 72 69 |m;...java/io/Pri|
00000100 6e 74 53 74 72 65 61 6d 01 00 07 70 72 69 6e 74 |ntStream...print|
00000110 6c 6e 01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 |ln...(Ljava/lang|
00000120 2f 53 74 72 69 6e 67 3b 29 56 00 21 00 05 00 06 |/String;)V.!....|
00000130 00 00 00 00 00 02 00 01 00 07 00 08 00 01 00 09 |................|
00000140 00 00 00 1d 00 01 00 01 00 00 00 05 2a b7 00 01 |............*...|
00000150 b1 00 00 00 01 00 0a 00 00 00 06 00 01 00 00 00 |................|
00000160 01 00 09 00 0b 00 0c 00 01 00 09 00 00 00 25 00 |..............%.|
00000170 02 00 01 00 00 00 09 b2 00 02 12 03 b6 00 04 b1 |................|
00000180 00 00 00 01 00 0a 00 00 00 0a 00 02 00 00 00 03 |................|
00000190 00 08 00 04 00 01 00 0d 00 00 00 02 00 0e |..............|
0000019e

2、javap

2.1 javap -c Test

Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
: aload_0
: invokespecial #; //Method java/lang/Object."<init>":()V
: return public static void main(java.lang.String[]);
Code:
: getstatic #; //Field java/lang/System.out:Ljava/io/PrintStream;
: ldc #; //String Hello World!
: invokevirtual #; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
: return }

2.2 javap -verbose Test

Compiled from "Test.java"
public class Test extends java.lang.Object
SourceFile: "Test.java"
minor version:
major version:
Constant pool:
const # = Method #.#; // java/lang/Object."<init>":()V
const # = Field #.#; // java/lang/System.out:Ljava/io/PrintStream;
const # = String #; // Hello World!
const # = Method #.#; // java/io/PrintStream.println:(Ljava/lang/String;)V
const # = class #; // Test
const # = class #; // java/lang/Object
const # = Asciz <init>;
const # = Asciz ()V;
const # = Asciz Code;
const # = Asciz LineNumberTable;
const # = Asciz main;
const # = Asciz ([Ljava/lang/String;)V;
const # = Asciz SourceFile;
const # = Asciz Test.java;
const # = NameAndType #:#;// "<init>":()V
const # = class #; // java/lang/System
const # = NameAndType #:#;// out:Ljava/io/PrintStream;
const # = Asciz Hello World!;
const # = class #; // java/io/PrintStream
const # = NameAndType #:#;// println:(Ljava/lang/String;)V
const # = Asciz Test;
const # = Asciz java/lang/Object;
const # = Asciz java/lang/System;
const # = Asciz out;
const # = Asciz Ljava/io/PrintStream;;
const # = Asciz java/io/PrintStream;
const # = Asciz println;
const # = Asciz (Ljava/lang/String;)V; {
public Test();
Code:
Stack=, Locals=, Args_size=
: aload_0
: invokespecial #; //Method java/lang/Object."<init>":()V
: return
LineNumberTable:
line : public static void main(java.lang.String[]);
Code:
Stack=, Locals=, Args_size=
: getstatic #; //Field java/lang/System.out:Ljava/io/PrintStream;
: ldc #; //String Hello World!
: invokevirtual #; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
: return
LineNumberTable:
line :
line : }

查看JAVA的class二进制文件的方法的更多相关文章

  1. 查看java的.class文件的方法

    在不通过eclipse等IDE安装反编译插件的情况下查看java的.class文件的方法:可以通过下载jd-gui class文件查看工具进行查看.如附件的“jd-gui.exe”程序. 1. 从网上 ...

  2. 【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法

    研究synchronized底层实现,涉及到查看java字节码的需要 前提是,你的PC已经成功安装了JDK并别配置了环境变量. ==========查看方法========= 一.javap查看简约字 ...

  3. 4种方法教你如何查看java对象所占内存大小

    摘要:本文讲述4种查看java对象所占内存大小的方法 本文分享自华为云社区<查看java对象所占内存大小>,作者:xiewenci. 计算java对象所占内存大小 1.使用jdk8自带AP ...

  4. 一种C#生成符合Java规则的二进制文件方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.一个项目中的真实问题 实际项目中,本想通过C#制作小工具生成SHP ...

  5. javap -s 查看java方法签名

    工程先用eclipse生成class目录,转到class目录下执行: javap -s com.example.hellojni.MainActivity Compiled from "Ma ...

  6. 命令查看java的class字节码文件、verbose、synchronize、javac、javap

    查看Java字节码 1 javac –verbose查看运行类是加载了那些jar文件 HelloWorld演示: public class Test { public static void main ...

  7. Java学习-025-类名或方法名应用之一 -- 调试源码

    上文讲述了如何获取类名和方法名,敬请参阅: Java学习-024-获取当前类名或方法名二三文 . 通常在应用开发中,调试或查看是哪个文件中的方法调用了当前文件的此方法,因而在实际的应用中需要获取相应的 ...

  8. android 工程里缺少 R.java 文件原因和解决方法

    作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...

  9. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

随机推荐

  1. Spring Mvc如何通过注解的方式设置视图解析器的优先级

    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalRes ...

  2. docker查看容器的网络ip

    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id 可直 ...

  3. Java遍历对象所有属性

    要获取对象的所有属性可以使用getDeclaredFields()方法会返回一个Field数组遍历这个数组几个遍历所有属性注意使用这个方法会抛出4个异常然后根据属性的类型选择执行对应的内容 publi ...

  4. Protobuf 协议语言指南

    l  定义一个消息(message)类型 l  标量值类型 l  Optional 的字段及默认值 l  枚举 l  使用其他消息类型 l  嵌套类型 l  更新一个消息类型 l  扩展 l  包(p ...

  5. 基于Otsu算法的图像自适应阈值切割

    在图像处理实践中,将灰度图转化为二值图是非经常见的一种预处理手段. 在Matlab中,能够使用函数BW = im2bw(I, level)来将一幅灰度图 I.转化为二值图. 当中.參数level是一个 ...

  6. CentOS6.4 xen4.2 虚拟机 桥接网络设置

    安装好xen后,可以使用virt-manager来配置虚拟网络 virbr0,以及创建虚拟机 都使用virt-manager. [虽说可以使用xm create XX命令行根据脚本创建,但是从来都不知 ...

  7. jQuery操作Frame(iFrame)

    没找到很好的方法只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮$(window.frames["iframe1"].docu ...

  8. canvas移动端常用技巧图片loading

    核心知识点:drawImage 作用:将图片加载在canvas html: <canvas id="myCanvas" width="200" heigh ...

  9. Qt5.3.1 静态编译的configure

    今天最终自己静态编译过了QT5.3.1, 成功用在项目上了, 记录下configure指令.  configure -confirm-license -opensource -platform win ...

  10. Android -- Camera2(Android5.0)

    Camera2 Camera2是Android5.0中的其中一个新的特性,新的API.与原来的camera API相比,不同之处在于: 原生支持RAW照片输出 突发拍摄模式 制约拍照速度的不再是软件而 ...