话说如果没有写初始化块和静态初始化块的程序中,首先执行的都是构造方法,主要用于初始化,但是初始化代码块、静态初始化代码块、构造方法它们之间的执行顺序是什么样子的呢
Java代码
package test5;
public class Test1 {
public static void main(String args[])
{
Test2 t1 = new Test2();
System.out.println("----------第二次实例化----------");
Test2 t2 = new Test2();
}
}
class Test2
{
//构造方法
public Test2()
{
System.out.println("构造方法");
}
//初始化代码块
{
System.out.println("初始化代码块");
}
//静态初始化代码块
static
{
System.out.println("静态初始化代码块");
}
}
首先看看运行结果:
Java代码
静态初始化代码块
初始化代码块
构造方法
----------第二次实例化----------
初始化代码块
构造方法
看到没有,第一次实例化Test2后,结果与第二次还不一样,总么回事呢?
当第一次实例化Test2后,执行顺序是:静态初始化代码块>初始化代码块>构造方法
当第二次实例化Test2后,执行顺序是:初始化代码块>构造方法
为什么第二次没有执行静态初始化块呢,因为静态初始化块只会在第一次装入系统的时候运行,当再次实例化的时候就不需要再执行了,因为已经存在了
分享到:
相关推荐
这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种初始化块在创建类实例或加载类时分别扮演着不同的角色。 **静态初始化块**...
根据是否带有 `static` 关键字,初始化块分为两种类型:普通初始化块(非静态初始化块)和静态初始化块。 1. 普通初始化块(非静态初始化块) 普通初始化块在创建对象时会被隐式调用,并且在执行构造器之前运行。...
详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序
`static`静态初始化块是用来初始化类级别的变量,也就是说,这些变量是属于类本身,而不是类的实例。当我们讨论“Java static静态初始化块”时,我们关注的是如何在类加载时执行特定的初始化代码。 首先,让我们...
NULL 博文链接:https://happywaterlife.iteye.com/blog/1567461
1. 首先,执行父类的静态初始化块,打印出 "父类--静态变量" 和 "父类--静态初始化块"。 2. 接着,执行子类的静态初始化块,打印出 "子类--静态变量" 和 "子类--静态初始化块"。 3. 然后,创建子类实例,首先执行...
- **非静态块(实例初始化块)**:在每次创建类的新实例时执行的代码块,用于初始化非静态域。 - **构造函数**:用于初始化新创建的对象的方法。 #### 二、初始化顺序 按照 Java 的规定,以下列出了类初始化的基本...
System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...
Java编程语言中,静态块(static block)和初始化块(instance initialization block)是两种特殊的代码块,它们在程序运行的不同阶段被执行,对于类和对象的初始化有着重要作用。同时,`main`方法是Java程序的入口...
Java中的对象初始化流程是编程实践中一个非常重要的概念,它涉及到类加载、静态初始化块、实例初始化块、构造器等多个方面。下面将详细解释这个过程。 首先,对象初始化流程的起点是程序的入口点,即`main`方法。当...
Java中静态初始化块的执行顺序 Java是一种面向对象的编程语言,静态初始化块是Java中的一个重要概念。静态初始化块是Java类中的一种特殊的初始化块,它用于初始化类的静态变量和静态方法。在Java中,静态初始化块的...
2. **静态初始化块的执行**:紧随静态成员变量之后,静态初始化块被执行。 3. **父类静态成员变量及初始化块**:如果当前类继承自另一个类,则父类的静态成员变量和静态初始化块会在子类之前被初始化。 4. **实例...
这里我们主要关注初始化阶段,也就是执行静态初始化块(如果有的话)。 2. **静态初始化**: 静态初始化块(也称为静态初始化器)是在类被加载并初始化时执行的,且只执行一次。它用于初始化类级别的静态变量。在`...
在 Java 中,静态变量的初始化过程可以被分为三个阶段:静态初始化、非静态初始化和执行构造函数。静态初始化是指在类加载时对静态变量的初始化。非静态初始化是指在实例创建时对实例变量的初始化。执行构造函数是指...
3. **父类静态初始化块**:然后是第一个静态初始化块,输出 `"我输出的是父类静态块内容→" + BaseClass.basename`。由于 `basename` 已被初始化,因此输出结果为 `"我输出的是父类静态块内容→父类静态变量"`。 4...
子类 --静态初始化块 "); 34. } 35. 36. // 初始化块 37. { 38. System.out.println(s_Field); 39. System.out.println(" 子类 --初始化块 "); 40. } 41. 42. // 构造器 43. public SubClass() { 44. System.out....
- 静态初始化块(static{}):如果类中存在静态初始化块,该块的代码会在类加载后的准备阶段执行,用于初始化静态变量或执行其他静态设置任务。 - 静态变量的赋值:接着,静态变量会被赋予它们的初始值,这可以是...
首先,需要了解Java类初始化的基本规则,即在类的静态变量、静态初始化块、变量、初始化块、构造器这五个部分中,它们的初始化顺序依次是:静态变量、静态初始化块、变量、初始化块、构造器。这个顺序在单个类中是...
ANSWER: 静态变量和静态初始化块的初始化顺序是最高的,因此 Father 类中的静态变量和静态初始化块将首先被初始化,接着是 Son 类中的静态变量和静态初始化块。然后是变量和初始化块,最后是构造器。 以下是一个...