class文件简介

    xiaoxiao2026-04-22  7

    可以直接把.class文件拖到eclipse中,看到内容。

    图0-1 class文件内容示例

    1.文件格式

    (1) magic 在class文件开头的四个字节, 存放着class文件的魔数,为固定值0XCAFEBABE。若无,则 不能被JVM识别。 (2)minor_version 和 major_version 紧接着魔数的四个字节是class文件的此版本号和主版本号。

    2.类型表示

    2.1 引用类型

    L类型的全限定名;   如Long类型对应的就是Ljava/lang/Long;

    需要注意到,在表示全限定名时将点号替换成了“/”。

    2.2 基本类型

    每种基本数据类型都有一个大写字母做对应, void也有一个大写字符做对应。 下表是void和基本数据类型在描述符中的对应。 基本数据类型和void类型类型的对应字符byteBcharCdoubleDfloatFintIlongJshortSbooleanZvoidV

    2.3 数组类型

    若干个“[”  +  数组中元素类型的对应字符串  。如Object[][][]类型的对应字符串是: [[[Ljava/lang/Object;  如double[][] 类型的对应字符串是: [[D

    3.方法签名

    (参数1类型 参数2类型 参数3类型 ...)返回值类型   一些对照情况见下表。 方法描述符方法声明()Iint getSize()()Ljava/lang/String;String toString()([Ljava/lang/String;)Vvoid main(String[] args)()Vvoid wait()(JI)Vvoid wait(long timeout, int nanos)(ZILjava/lang/String;II)Zboolean regionMatches(boolean ignoreCase, int toOffset, String other, int ooffset, int len)([BII)Iint read(byte[] b, int off, int len )()[[Ljava/lang/Object;Object[][] getObjectArray()

    4.反编译

    eclipse有插件可以支持。
    最新回复(0)