Java面试问题之七

Java虚拟机在类的加载、连接和初始化阶段都做了哪些工作?

答:(1)加载阶段:查找并加载类的二进制数据。
      (2)连接阶段:包括验证、准备和解析类的二进制数据。
              验证:确保被加载的类是正确的。
              准备:为类的静态变量分配内存,并将其初始化为默认值。
              解析:把类中的符号引用都替换成直接引用。
      (3)初始化:给类的静态变量赋予正确的初始值。

        在类或接口被加载和连接的时机上,Java虚拟机规范给实现提供了一定的灵活性,但是它   
        严格定义了初始化的时机,就是所有Java虚拟机实现必须在每个类或者接口被Java程序“首
        次主动使用”时才初始化它们。( Java程序对类的使用方式有两种:主动使用和被动使用


         ——解答摘自《Java面向对象编程》

猜你喜欢

转载自yuhuang-neil.iteye.com/blog/1163612