Java学习之虚拟机运行时教程.ppt

这里需要区别类变量和实例变量,简单说: 类变量就是静态变量,这个变量是属于类的,在没有类的实例的时候也可以使用这些类变量。一个类的某个类变量只有一份。 实例变量需要在类的实例产生后才能使用的,每个实例的同名实例变量的值可能不同。 解析过程就是在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用的过程。 符号引用和字节码中的信息基本类似。 直接引用:比如: 1. 指向类型、类变量和类方法的直接引用可能是指向方法区的本地指针。 a, 类型的直接引用可能简单的指向保存类型数据的方法区中的与实现相关的数据结构。 b, 类变量的直接引用可以指向方法区中保存的类变量的值。 c, 类方法的直接引用可以指向方法区中一段数据结构,可能包含:是否为本地方法的标识信息,如果是本地方法,就会包含一个指向动态链接本地方法实现的函数指针;如果不是本地方法,就会包含一个方法的字节码、操作数栈空间的最大值、局部变量空间的最大值等信息。 2. 指向实例变量和实例方法的直接引用都是偏移量。 a, 实例变量的直接引用可能是从对象的映像算起到这个实例变量位置的偏移量。 b, 实例方法的直接引用可能是到方法表的偏移量。 上面的代码中,类变量e在没有先声明的情况下,被使用了,应该把e的声明语句放到静态语句块的前面。 1. 类的初始化时,如果有类变量初始化语句或者静态语句块,初始

文档评论(0)

1亿VIP精品文档

相关文档