`
youyu4
  • 浏览: 440344 次
社区版块
存档分类
最新评论

Java静态块、非静态块、构造函数在初始化时的执行顺序

    博客分类:
  • java
 
阅读更多

Java静态块、非静态块、构造函数在初始化时的执行顺序

 

执行顺序

 

没有继承的执行顺序

 

  • 实现自身的静态属性和静态代码块。
  • 实现自身的非静态属性和非静态代码块。
  • 执行自身的构造函数。

有继承的执行顺序

 

  • 实现父类的公共静态属性和静态块级代码。
  • 实现自身的静态属性和静态块级代码。
  • 实现父类的非静态属性和非静态代码块。
  • 执行父类的构造函数。
  • 实现自身的非静态属性和非静态代码块。
  • 执行自身的构造函数。

 

 

代码

 

静态块

static {  
} 

 

非静态块

{  
} 

 

 

 

静态块和非静态块的区别

 

  • 相同点:都是JVM加载类时且在构造函数执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值。
  • 不同点:静态代码块在非静态代码块之前执行(静态代码块 > 非静态代码块)。静态代码块只在第一次new时执行一次,之后不再执行。而非静态代码块每new一次就执行一次。
分享到:
评论

相关推荐

    java类中静态域、块,非静态域、块,构造函数的初始化顺序

    特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块、非静态块以及构造函数时,明确它们的初始化顺序有助于避免潜在的编程错误。 根据题目提供的内容,我们将重点讨论这些概念以及它们之间的相互关系...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    java代码的初始化顺序demo

    总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...

    类继承的初始化顺序类,继承的初始化顺序

    在面向对象语言中(如Java、C#等),当创建一个继承自某个基类的子类对象时,会有一个特定的初始化顺序。这个顺序通常遵循以下步骤: 1. **基类静态成员初始化**:如果基类中有任何静态成员,则会在程序启动时按照...

    学习java静态数据初始化.doc

    在 Java 中,静态变量的初始化过程可以被分为三个阶段:静态初始化、非静态初始化和执行构造函数。静态初始化是指在类加载时对静态变量的初始化。非静态初始化是指在实例创建时对实例变量的初始化。执行构造函数是指...

    Java类的完整构造执行顺序

    2006年11月16日的更新提到了一种特殊情况,即在静态初始化块中直接或间接地创建了当前类的实例,这可能会导致初始化顺序的混乱。为了避免此类问题,应避免在静态初始化块中直接实例化当前类,而是将其延迟到类完全...

    C++和Java初始化顺序的比较代码

    2. 非静态数据成员:在构造函数初始化列表中,成员变量按照它们在类声明中的顺序被初始化。即使初始化列表中的顺序不同,也会按照声明的顺序进行。 例如: ```cpp class MyClass { public: int a; int b; static...

    类初始化顺序示例讲解

    程序通过一系列输出语句来展示类成员变量、静态成员变量以及构造函数的初始化顺序。下面将逐一分析这些步骤,并解释为何会按照这样的顺序进行。 ### 初始化顺序解析 #### 静态成员变量与静态初始化块 1. **父类...

    Java static静态初始快

    1. **执行顺序**:静态初始化块在非静态初始化块之前执行。当类第一次被加载时,JVM会按照它们在源代码中的顺序执行静态初始化块。 2. **类加载机制**:Java类的加载是懒加载的,即只有在类被首次使用时,JVM才会...

    java中静态代码块与构造方法的执行顺序判断

    在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...

    Java静态和非静态成员变量初始化过程解析

    通过这两个示例,我们可以看到,非静态成员变量的初始化顺序是:成员变量初始化语句>成员变量初始化块>构造函数。 而对于静态成员变量,它们是在类加载时初始化的。例如,我们可以定义一个静态成员变量static ...

    JAVA程序:静态块代码

    它的执行顺序早于类的非静态初始化块和构造函数。当类第一次被加载时,静态块按照它们在代码中的顺序依次执行。 下面是一个简单的静态块示例,展示了如何使用静态块初始化静态变量: ```java public class ...

    Java变量初始化

    这一切都是在构造函数执行之前,变量的真正初始化是在构造函数中执行。 Java 变量初始化的时机 Java 变量初始化的时机可以分为两类:实例变量初始化和类变量初始化。 实例变量初始化 实例变量初始化可以在三个...

    类和对象的初始化过程.zip

    在`Test.java`中,可能展示了这种初始化顺序。 总结,这个压缩包文件提供了关于Java中类和对象初始化的实例,包括静态和非静态成员的处理、继承、构造函数的调用顺序等。通过分析并运行这些代码,开发者可以更深入...

    java中静态与非静态的区别

    - **静态构造函数**在.NET运行库加载类时执行,通常是在第一次调用类成员之前。 - **实例构造函数**在创建对象实例时执行。 3. **初始化次数**: - **静态构造函数**只执行一次,这有助于确保静态成员的初始化仅...

    Java类继承关系中的初始化顺序实例详解

    在非继承关系中,类的初始化顺序是按照静态成员变量、静态代码块、普通成员变量和构造函数的顺序进行的,而在继承关系中,类的初始化顺序是按照父类和子类的静态成员变量、静态代码块、普通成员变量和构造函数的顺序...

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

    非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被运行。 初始化块的特点 初始化块有以下几个特点: * 初始化块不能接收任何参数 * 初始化块可以用来定义一些所有对象共有的属性、方法等内容 * ...

    Java对象初始化顺序的使用

    在Java编程语言中,对象初始化顺序是一个非常关键的概念,它涉及到类和对象的生命周期以及成员变量、静态成员变量、初始化块和构造函数的执行次序。理解这些规则对于编写健壮且可预测的代码至关重要。 首先,我们来...

Global site tag (gtag.js) - Google Analytics