`
xunixyoung
  • 浏览: 13094 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

在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();
    }
}


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


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



分享到:
评论
2 楼 liangwenzheng 2008-11-26  
learning...
1 楼 367laoshi 2008-11-26  

当class 被loading,就开始对static变量初始化了
此时还没对象产生

相关推荐

    类初始化和实例初始化1

    JVM会在类加载时生成一个名为()的特殊方法,用于聚合这些静态初始化操作,()方法只执行一次。 接下来是实例初始化,也就是当我们创建一个新的对象时发生的过程: 1. 分配内存:为新对象分配内存空间。 2. 默认初始...

    关于C++类的成员初始化列表的相关问题

    这种列表在特定情况下是必要的,因为它可以提高代码的效率并确保正确的初始化顺序。 首先,成员初始化列表在以下四种情况下是必不可少的: 1. 初始化引用成员(reference members):引用必须在定义时初始化,不能...

    Java类变量和成员变量初始化过程的应用介绍

    员变量的初始化,Java有明确的规定和顺序。在讲解类变量和成员变量的初始化过程之前,我们首先要明白类变量(静态变量)和成员变量(实例变量)的区别。...在编写代码时,应合理安排初始化顺序,以满足程序的需求。

    探讨Struts的初始化方法

    当Servlet容器接收到客户端请求并发现该请求对应的是`ActionServlet`时,如果该Servlet尚未被初始化,则会触发`init()`方法的执行。 - 在`init()`方法内部,首先调用了`initInternal()`方法来处理更具体的初始化...

    Java中初始化块详解及实例代码

    非静态初始化块在每个对象生成时都会被执行一次,可以初始化类的实例变量。非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被运行。 初始化块的特点 初始化块有以下几个特点: * 初始化块不能...

    C++有子对象的派生类的构造函数

    总结,C++派生类的构造函数处理子对象时,需要关注子对象的构造方式、初始化顺序以及成员初始化列表的使用。理解并熟练掌握这些概念对于编写高效、可靠的C++代码至关重要。通过不断练习和实践,你可以更好地理解和...

    一道关于实例化顺序的C#面试题

    在这道关于实例化顺序的C#面试题中,我们可以总结出以下几个重要的知识点: 1. 内联(inline)方式初始化字段:在C#中,我们可以使用内联方式来初始化字段,这是一种简化的语法。例如:`public class SomeType { ...

    javase子类父类继承关系图解

    通过深入理解继承和成员初始化顺序,开发者可以避免出现意外的null引用错误,确保对象在被创建时状态正确。同时,这也为实现设计模式如工厂模式、单例模式等奠定了基础。在实际开发中,掌握这些概念有助于写出更高效...

    深入剖析java类的构造方式

    Java 类的构造方式是编程中一个至关重要的概念,它涉及到对象的创建和初始化。这篇文章将深入探讨这个主题,特别是通过查看具体的代码...通过实例和字节码分析,程序员能够更好地理解类实例是如何被构建和初始化的。

    生成静态的方法

    静态方法通常用于那些不需要访问类实例状态的操作,例如工具方法、计算方法或常量定义。 2. 静态变量 静态变量也是与类关联,而不是与类的每个实例关联的变量。所有类的实例共享同一份静态变量的拷贝,这意味着改变...

    cpp代码-C++:初始化列表:1.向数据成员传递值

    5. **顺序**:初始化列表中的成员初始化顺序与它们在类定义中的顺序一致,这与在构造函数体中赋值的顺序无关。 6. **异常安全**:如果在初始化列表中的某个初始化操作抛出异常,那么在该操作之前的所有初始化都已...

    第4章 初始化和清理.ppt

    此外,构造函数可以带有参数,以根据传入的值来定制对象的初始化,如`Tree`类的构造函数`Tree(int i)`,它允许设置对象的高度。 函数重载是另一种关键特性,允许在同一类中定义多个同名但参数列表不同的方法。这...

    Python中实例化class的执行顺序示例详解

    总结来说,Python类实例化的执行顺序包括`__new__`的调用、类变量的初始化,以及`__init__`的逐级调用。理解这一过程对于编写复杂的继承结构和管理类的状态至关重要。通过掌握这些知识,开发者可以更好地设计和维护...

    Java编程思想初始化与清理PPT教案学习.pptx

    Java编程思想中的初始化与清理是编程过程中的关键环节,它涉及到类的实例化以及对象生命周期的管理。在Java中,构造器(Constructor)是确保对象初始化的重要工具。 1. **构造器确保初始化** - 构造器是与类同名的...

    SpringBoot项目启动时如何读取配置以及初始化资源

    在这个例子中,`testInit`方法会在Spring容器初始化时调用,生成一个Bean并将其添加到容器中。 2. **实现CommandLineRunner接口** `CommandLineRunner`接口提供了在Spring应用启动后,所有Bean初始化完成之前...

    Java编程思想第05章初始化与清理.ppt

    2. **构造器命名规则**:构造器的名称必须与类名相同,这是为了明确表明这个方法是用于创建和初始化类的新实例。 3. **构造器的种类**:分为两种,一种是无参构造器,通常被称为默认构造器,另一种是带参构造器,...

    类的方法练习

    14. 实例变量与局部变量:实例变量是类的成员变量,静态变量在类加载时创建,局部变量在声明时必须初始化。选项C(静态变量在方法执行时创建)是错误的。 15. 构造方法调用:构造方法不能像普通方法那样被调用,...

    c++基础语法:构造函数初始化列表

    成员变量的初始化顺序是由它们在类定义中的声明顺序决定的,与初始化列表中列出的顺序无关。因此,编写初始化列表时,应确保列表中的顺序与声明顺序保持一致,以确保正确初始化。 3. **效率考虑**: - 使用初始化...

    JAVA判断题含答案.doc

    - **知识点**:Java 中局部变量必须显式初始化后才能使用,但对于类变量和实例变量,Java 会自动提供默认值。 - **正确答案**:A. 错误 #### 19. 当系统调用当前类的构造方法时,如果没有 `this()` 语句进行重载...

Global site tag (gtag.js) - Google Analytics