论坛首页 入门技术论坛

关于类的实例生成时的初始化顺序

浏览 1905 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-26   最后修改:2008-11-26

在Java中,一个类在生成实例时,要进行初始化工作。这些初始化工作涉及到类中所定义的静态变量,变量,静态初始化块,初始化块,构造器这5类。其中,静态初始化块和初始化块并不常见,但它们一旦出现会给我们造成很大的疑惑。现在我们就来通过一个程序来看看这个5个部分到底是如何初始化的。


public class InitialOrderTest {
    public static String staticField = "静态变量";    //静态变量
    public String field = "变量";    //变量
   
    //初始化块
    {
        System.out.println("初始化块");
    }
   
    //静态初始化块
    static {
        System.out.println("静态初始化块");
    }
   
//    -------------------------------------------------------------   
    public InitialOrderTest() {
        System.out.println("构造器");
    }
   
//    -------------------------------------------------------------
    public static void main(String[] args) {
        new InitialOrderTest();
    }
}


程序的运行结果为: 静态初始化块
                            初始化块
                            构造器


由此说明,对于一个类来说,其生成实例时,初始化工作的顺序是: (静态变量、静态初始化快)>(变量、初始化块)>构造器



   发表时间:2008-11-26  

当class 被loading,就开始对static变量初始化了
此时还没对象产生
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics