Class文件是以8位字节为基础单位的二进制流

Big-Endian和Little-Endian的定义如下:

1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端

字节存储方式

大端和小端(Big endian and Little endian):对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节)

构成

无符号数

  • u1:1个字节
  • u2:2个字节
  • u4:4个字节
  • u8:8个字节
  • 可描述数字、索引引用、数量值或UTF-8编码的字符串值 由多个无符号数或者其他表作为数据项构成的复合数据类型("_info"结尾),用于描述有层次关系的复合结构的数据,整个Class文件本质上就是一张表

class字节码文件结构

class {
    u4                magic;
    u2                minor_version;
    u2                major_version;
    u2                constant_pool_count;
    cp_info           constant_pool[constant_pool_count - 1];
    u2                access_flags;
    u2                this_class;
    u2                super_class;
    u2                interfaces_count;
    interfaces        interfaces[interfaces_count];
    u2                fields_count;
    field_info        field[fields_count];
    u2                methods_count;
    method_info       methods[methods_count];
    u2                attributes_count;
    attribute_info    attributes[attributes_count];
}

示意图

results matching ""

    No results matching ""