dvm学习笔记(三)类文件结构、java方法数65535上限的原因

了解class类文件结构,对于学习smali也是有必要的!

一、class类文件的结构(8位字节,一个字节占8位,以字节为基础单位的二进制流)
存储结构:class文件是一组以字节(8位)为基础单位的二进制流,各数据严格按照顺序紧凑排列在class文件中,中间没有任何分隔符。需要占用一个字节(8位)以上空间的数据,会按照高位在前的方式分割成若干个字节(8位)进行存储。
概念:无符号数和表组成。无符号数是基本数据类型,用来描述数字、索引引用、数量值、或者按照UTF-8编码构成字符串值。表是由多个无符号数或其他表作为数据项构成的符合数据类型,用来描述有层次关系的符合结构数据。
无符号类型为基本类型,以u1、u2、u4、u8表示1个字节、2个字节、4个字节、8个字节的无符号数。
1、魔数与Class文件的版本
1)class文件的头4个字节为魔数,唯一作用,确定该文件是否为一个能被虚拟机接受的class文件。【class文件类型的标识】
2)class文件的魔数值为:0xCAFEBABE
3)魔数后面的4个字节为class文件的版本号,第5、6个字节是次版本号(Minor Version),第7、8个字节为主板本号(Major Version)
2、常量池(class文件结构中与其他项目关联最多的类型、占用class文件空间最大的数据之一、class中第一个出现的表)
1)常量池入口,有一个u2类型数据表示常量池容量,常量池容量计数是从1开始的
 0用来表示某些指向常量池的索引表达不引用任何一个常量池项目,把索引值设置为0
2)常量池存放两大类常量:字面量、符号引用。
 字面量:文本字符串、声明为final的常量值

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值