`
sbl2255
  • 浏览: 221831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

静态初始化块(转)

    博客分类:
  • jdk
 
阅读更多
话说如果没有写初始化块和静态初始化块的程序中,首先执行的都是构造方法,主要用于初始化,但是初始化代码块、静态初始化代码块、构造方法它们之间的执行顺序是什么样子的呢
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后,执行顺序是:初始化代码块>构造方法
为什么第二次没有执行静态初始化块呢,因为静态初始化块只会在第一次装入系统的时候运行,当再次实例化的时候就不需要再执行了,因为已经存在了
分享到:
评论

相关推荐

    Java静态初始化块和对象初始化块

    这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种初始化块在创建类实例或加载类时分别扮演着不同的角色。 **静态初始化块**...

    Java初始化块Java初始化块.doc

    根据是否带有 `static` 关键字,初始化块分为两种类型:普通初始化块(非静态初始化块)和静态初始化块。 1. 普通初始化块(非静态初始化块) 普通初始化块在创建对象时会被隐式调用,并且在执行构造器之前运行。...

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    Java static静态初始快

    `static`静态初始化块是用来初始化类级别的变量,也就是说,这些变量是属于类本身,而不是类的实例。当我们讨论“Java static静态初始化块”时,我们关注的是如何在类加载时执行特定的初始化代码。 首先,让我们...

    父类、子类、静态初始化块、初始化块

    NULL 博文链接:https://happywaterlife.iteye.com/blog/1567461

    java面试题-类的初始化顺序.doc

    1. 首先,执行父类的静态初始化块,打印出 "父类--静态变量" 和 "父类--静态初始化块"。 2. 接着,执行子类的静态初始化块,打印出 "子类--静态变量" 和 "子类--静态初始化块"。 3. 然后,创建子类实例,首先执行...

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

    - **非静态块(实例初始化块)**:在每次创建类的新实例时执行的代码块,用于初始化非静态域。 - **构造函数**:用于初始化新创建的对象的方法。 #### 二、初始化顺序 按照 Java 的规定,以下列出了类初始化的基本...

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

    System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...

    Java中的静态块初始化块及main方法.doc

    Java编程语言中,静态块(static block)和初始化块(instance initialization block)是两种特殊的代码块,它们在程序运行的不同阶段被执行,对于类和对象的初始化有着重要作用。同时,`main`方法是Java程序的入口...

    对象初始化流程梳理对象初始化流程梳理

    Java中的对象初始化流程是编程实践中一个非常重要的概念,它涉及到类加载、静态初始化块、实例初始化块、构造器等多个方面。下面将详细解释这个过程。 首先,对象初始化流程的起点是程序的入口点,即`main`方法。当...

    简单了解java中静态初始化块的执行顺序

    Java中静态初始化块的执行顺序 Java是一种面向对象的编程语言,静态初始化块是Java中的一个重要概念。静态初始化块是Java类中的一种特殊的初始化块,它用于初始化类的静态变量和静态方法。在Java中,静态初始化块的...

    java中类的初始化顺序

    2. **静态初始化块的执行**:紧随静态成员变量之后,静态初始化块被执行。 3. **父类静态成员变量及初始化块**:如果当前类继承自另一个类,则父类的静态成员变量和静态初始化块会在子类之前被初始化。 4. **实例...

    java代码的初始化顺序demo

    这里我们主要关注初始化阶段,也就是执行静态初始化块(如果有的话)。 2. **静态初始化**: 静态初始化块(也称为静态初始化器)是在类被加载并初始化时执行的,且只执行一次。它用于初始化类级别的静态变量。在`...

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

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

    类初始化顺序示例讲解

    3. **父类静态初始化块**:然后是第一个静态初始化块,输出 `"我输出的是父类静态块内容→" + BaseClass.basename`。由于 `basename` 已被初始化,因此输出结果为 `"我输出的是父类静态块内容→父类静态变量"`。 4...

    JAVA类的初始化顺序文.pdf

    子类 --静态初始化块 "); 34. } 35. 36. // 初始化块 37. { 38. System.out.println(s_Field); 39. System.out.println(" 子类 --初始化块 "); 40. } 41. 42. // 构造器 43. public SubClass() { 44. System.out....

    java程序初始化顺序

    - 静态初始化块(static{}):如果类中存在静态初始化块,该块的代码会在类加载后的准备阶段执行,用于初始化静态变量或执行其他静态设置任务。 - 静态变量的赋值:接着,静态变量会被赋予它们的初始值,这可以是...

    JAVA面试题解惑系列——类的初始化顺序

    首先,需要了解Java类初始化的基本规则,即在类的静态变量、静态初始化块、变量、初始化块、构造器这五个部分中,它们的初始化顺序依次是:静态变量、静态初始化块、变量、初始化块、构造器。这个顺序在单个类中是...

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    ANSWER: 静态变量和静态初始化块的初始化顺序是最高的,因此 Father 类中的静态变量和静态初始化块将首先被初始化,接着是 Son 类中的静态变量和静态初始化块。然后是变量和初始化块,最后是构造器。 以下是一个...

Global site tag (gtag.js) - Google Analytics