深入了解Java虚拟机中字段表集合,和在class中如何组织
2017-06-13 21:40
423 查看
今天看了一个大牛写的博客,了解了字段是如何在class中组织的和如何赋值的,也就是class中字段的机制
先学习几个名词吧
字段表:存储一个字段的信息的数据结构(你就想象成一个容器)
字段表集合:多个字段表组合在一起形成集合
字段表包括什么内容呢?
访问标志,名称索引,描述索引,属性计数器【如果属性计数器大于等于1,就有 ConstantValue[属性名称索引,属性长度,常量值索引] 这个数据结构】
访问标志:就是字段的修饰符,2个字节表示,会生成一个数值如0x000A,与之对应的有一个 ()特征值,标志符)表,与特征值求与(&)运算,结果为1,就有这个标志符
名称索引和描述索引:都是2字节,存储常量池中某常量的地址,名称---->字段名字,描述---->类型
我们先讲讲字段的赋值再将,属性计数器
有些时候我们会对一个字段直接赋值:如:private int a = 10;
这时就分为静态和非静态的了
1.静态:在构造方法中赋值
2.非静态:A.在静态构造方法中赋值B.在ConstantValue属性进行赋值
用ConstantValue属性进行赋值的条件:被static和final修饰,并且是基本类型或String类型,那么不被final修饰或者不是基本类型或String就在构造方法中赋值,
现在开始讲属性计数器:
属性计数器大于0的天是有字段是 :被static和final修饰,并且是基本类型或String类型
就会用ConstantValue属性赋值:第一个属性名称一般都是“ConstantValue”字符串代表是ConstantValue类型
再讲一个知识点,其实class中的类型和java中数据类型不一样,有一个(数据类型和class类型)表:
class文件将字段名称和field字段的数据类型表示作为字符串存储在常量池中。在field_info结构体中,紧接着访问标志的,就是字段名称索引和字段描述符索引,它们分别占有两个字节,其内部存储的是指向了常量池中的某个常量池项的索引,对应的常量池项中存储的字符串,分别表示该字段的名称和字段描述符
参考:http://m.blog.csdn.net/u010349169/article/details/41046443
--------------------------------------------------------------------------------
先学习几个名词吧
字段表:存储一个字段的信息的数据结构(你就想象成一个容器)
字段表集合:多个字段表组合在一起形成集合
字段表包括什么内容呢?
访问标志,名称索引,描述索引,属性计数器【如果属性计数器大于等于1,就有 ConstantValue[属性名称索引,属性长度,常量值索引] 这个数据结构】
访问标志:就是字段的修饰符,2个字节表示,会生成一个数值如0x000A,与之对应的有一个 ()特征值,标志符)表,与特征值求与(&)运算,结果为1,就有这个标志符
名称索引和描述索引:都是2字节,存储常量池中某常量的地址,名称---->字段名字,描述---->类型
我们先讲讲字段的赋值再将,属性计数器
有些时候我们会对一个字段直接赋值:如:private int a = 10;
这时就分为静态和非静态的了
1.静态:在构造方法中赋值
2.非静态:A.在静态构造方法中赋值B.在ConstantValue属性进行赋值
用ConstantValue属性进行赋值的条件:被static和final修饰,并且是基本类型或String类型,那么不被final修饰或者不是基本类型或String就在构造方法中赋值,
现在开始讲属性计数器:
属性计数器大于0的天是有字段是 :被static和final修饰,并且是基本类型或String类型
就会用ConstantValue属性赋值:第一个属性名称一般都是“ConstantValue”字符串代表是ConstantValue类型
再讲一个知识点,其实class中的类型和java中数据类型不一样,有一个(数据类型和class类型)表:
class文件将字段名称和field字段的数据类型表示作为字符串存储在常量池中。在field_info结构体中,紧接着访问标志的,就是字段名称索引和字段描述符索引,它们分别占有两个字节,其内部存储的是指向了常量池中的某个常量池项的索引,对应的常量池项中存储的字符串,分别表示该字段的名称和字段描述符
参考:http://m.blog.csdn.net/u010349169/article/details/41046443
--------------------------------------------------------------------------------
相关文章推荐
- 《Java虚拟机原理图解》1.4 class文件里的字段表集合--field字段在class文件里是如何组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 深入了解Java虚拟机学习之--如何实现线程安全?
- (转)《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- class文件中的字段表集合--field字段在class文件中是怎样组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的 --转载收藏
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的
- 如何深入掌握C语言?怎样深入了解c语言?如何提高编程能力?
- 深入了解java虚拟机
- 从案例深入了解如何重构代码-重构计划
- 学习之路二:关于集合和数组内在联系的深入了解
- 深入了解PHP类Class的概念
- C#集合类型的深入了解
- 深入了解java虚拟机-----类加载器