`

JAVA静态块加载实例

阅读更多

        一个类要想运行,首先被Java虚拟机将class文件内部字节码指令读取至内存并且包装成一个Class类型的对象,这个过程称为类加载,Class类的一个对象是对某一个类的一个描述!    

        调用类的某一个方法时,第一步是类加载。注意!static块,也就是静态块,在类加载的时候就执行了,而且只执行一次,因为不可能进行第二次类加载,从这个意义上说,静态的成员是第一时间执行的!

        实例:

package com.bijian.study;

class Singleton {
    
    private static String countStr = null;

    static {
        System.out.println("begin static method(),countStr:" + countStr);
        try {
            Thread.sleep(6000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        countStr = "test";
        System.out.println("after static method(),countStr:" + countStr);
    }

    private Singleton () {}

    public static String getInstance() {
        System.out.println("getInstance() countStr:" + countStr);
        return countStr;
    }
}

public class TestStaticSingleton {
    
    public static void main(String[] args) {

        System.out.println("begin first");
        String a = Singleton.getInstance();
        System.out.println("end first");
        
        System.out.println("begin second");
        String b = Singleton.getInstance();
        System.out.println("end second");
        
        System.out.println(a==b);
    }
}

运行结果:

begin first
begin static method(),countStr:null
after static method(),countStr:test
getInstance() countStr:test
end first
begin second
getInstance() countStr:test
end second
true

更详细的实例:http://blog.sina.com.cn/s/blog_812973c30101lp5k.html
分享到:
评论

相关推荐

    java 静态块实例块构造器调用

    Java编程语言中,类的初始化过程涉及到静态块(static block)、实例块(instance block)以及构造器(constructor)。这些块的执行顺序对于理解和编写复杂的Java程序至关重要,特别是在涉及继承关系时。下面我们将...

    java 静态代码块通过类加载器获取资源文件例子

    首先,静态代码块是在类被加载到JVM(Java虚拟机)时执行的一段代码,它不依赖于类的实例创建,而是与类本身绑定。静态代码块常用于初始化静态变量或进行一次性的系统设置。例如,在本案例中,可能是在程序启动时...

    Java静态代码块加载驱动代码实例

    Java静态代码块加载驱动代码实例 Java静态代码块是一种特殊的代码块,它可以在类加载时被执行,该代码块只能被加载一次,无论new多少个对象。静态代码块通常用来加载配置文件、初始化操作等。 在Java中,静态代码...

    java 代码块与静态代码块加载顺序

    本文将详细介绍 Java 代码块与静态代码块加载顺序的相关知识点,并提供实例代码来帮助读者更好地理解。 一、Java 代码块 Java 代码块是指在类中使用大括号 `{}` 包围的代码块,这些代码块可以出现在类的任何位置,...

    Java中的Static块与静态方法

    1. **类加载时执行**:静态块在类首次被加载到JVM时执行,这是在任何对象实例化之前发生的。 2. **只执行一次**:每个类的静态块在整个程序运行期间只执行一次。 3. **按出现顺序执行**:如果一个类中有多个静态块,...

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

    java面试题静态加载顺序构造方法

    java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); static{ System.out.println("tttt"); } X(){ System....

    JAVA程序:静态块代码

    在Java编程语言中,静态块...总之,静态块是Java中一个重要的概念,它提供了一种在类加载时初始化静态变量的机制,常用于设置全局配置或进行一次性操作。正确理解和使用静态块可以帮助我们编写更加高效和整洁的代码。

    Java基础练习题练习下静态块的用处

    通过上述知识点,我们可以理解Java中的静态块是类加载过程中的一个重要组成部分,它在初始化静态变量和管理类级别资源等方面发挥着关键作用。在学习Java基础时,掌握静态块的使用能够帮助我们编写更加高效和整洁的...

    Java虚拟机类加载顺序

    扩展类加载器是system class loader的父类加载器,但是它的父类加载器不是实际的`ClassLoader`实例,因此调用`getParent()`方法会返回`null`。 ##### 2.3 System Class Loader (系统类加载器) 系统类加载器,也被...

    java静态代码块与非静态代码块参照.pdf

    本文将通过实例代码和详细解释,阐述 Java 静态代码块与非静态代码块的区别和应用场景。 静态代码块 静态代码块是指使用静态关键字修饰的代码块,属于类级别的代码块。它的特点是:在类加载时自动执行的,且只执行...

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

    静态初始化块是以`static`关键字标识的代码块,它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态初始化块常用于设置类级别的变量,或者执行只应执行一次的初始化操作。例如,如果一个类需要在程序运行前...

    Java类加载器.pdf

    其中,初始化阶段会执行类的静态代码块,这是`Class.forName()`方法中`initialize`参数所控制的行为。 总之,Java类加载器是Java语言强大灵活性和动态性的体现,通过合理的类加载策略,可以实现更高效、安全的应用...

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

    首先,静态块在类被加载到Java虚拟机(JVM)时执行,且只会执行一次。静态块主要用于初始化类级别的变量,也就是静态变量。在上述示例中,`test`的输出表明静态块在程序开始时被调用。 初始化块,也称为实例初始化...

    java笔记静态成员

    java语言中静态成员是指属于类的成员,而不是属于实例的成员。静态成员可以被所有实例共享,在程序中只有一份拷贝。静态成员包括静态变量、静态方法和静态初始化块。 1、静态变量 静态变量是指属于类的变量,它们...

    构造函数与静态块的执行顺序

    在Java中,当一个类继承自另一个类时,实例化子类对象时构造函数与静态块的执行顺序遵循以下规则: 1. **静态块的执行**:首先,所有父类的静态块会被执行,然后再执行子类的静态块。这是因为静态块是在类加载时...

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

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

    Java类加载器:静态变量初始化.docx

    在 Singleton 类的静态块中,我们首先对 a 和 b 进行初始化,接着创建了一个 Singleton 实例,并将其赋值给 singleton 变量。最后,在 main 方法中,我们通过 Singleton.getInstance() 方法获取 Singleton 实例,并...

Global site tag (gtag.js) - Google Analytics