Java虚拟机在类的加载、连接和初始化阶段都做了哪些工作?
答:(1)加载阶段:查找并加载类的二进制数据。
(2)连接阶段:包括验证、准备和解析类的二进制数据。
验证:确保被加载的类是正确的。
准备:为类的静态变量分配内存,并将其初始化为默认值。
解析:把类中的符号引用都替换成直接引用。
(3)初始化:给类的静态变量赋予正确的初始值。
在类或接口被加载和连接的时机上,Java虚拟机规范给实现提供了一定的灵活性,但是它
严格定义了初始化的时机,就是所有Java虚拟机实现必须在每个类或者接口被Java程序“首
次主动使用”时才初始化它们。([color=red]Java程序对类的使用方式有两种:主动使用和被动使用[/color])
——解答摘自《Java面向对象编程》
答:(1)加载阶段:查找并加载类的二进制数据。
(2)连接阶段:包括验证、准备和解析类的二进制数据。
验证:确保被加载的类是正确的。
准备:为类的静态变量分配内存,并将其初始化为默认值。
解析:把类中的符号引用都替换成直接引用。
(3)初始化:给类的静态变量赋予正确的初始值。
在类或接口被加载和连接的时机上,Java虚拟机规范给实现提供了一定的灵活性,但是它
严格定义了初始化的时机,就是所有Java虚拟机实现必须在每个类或者接口被Java程序“首
次主动使用”时才初始化它们。([color=red]Java程序对类的使用方式有两种:主动使用和被动使用[/color])
——解答摘自《Java面向对象编程》