一个类要想运行,首先被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编程语言中,类的初始化过程涉及到静态块(static block)、实例块(instance block)以及构造器(constructor)。这些块的执行顺序对于理解和编写复杂的Java程序至关重要,特别是在涉及继承关系时。下面我们将...
首先,静态代码块是在类被加载到JVM(Java虚拟机)时执行的一段代码,它不依赖于类的实例创建,而是与类本身绑定。静态代码块常用于初始化静态变量或进行一次性的系统设置。例如,在本案例中,可能是在程序启动时...
Java静态代码块加载驱动代码实例 Java静态代码块是一种特殊的代码块,它可以在类加载时被执行,该代码块只能被加载一次,无论new多少个对象。静态代码块通常用来加载配置文件、初始化操作等。 在Java中,静态代码...
本文将详细介绍 Java 代码块与静态代码块加载顺序的相关知识点,并提供实例代码来帮助读者更好地理解。 一、Java 代码块 Java 代码块是指在类中使用大括号 `{}` 包围的代码块,这些代码块可以出现在类的任何位置,...
1. **类加载时执行**:静态块在类首次被加载到JVM时执行,这是在任何对象实例化之前发生的。 2. **只执行一次**:每个类的静态块在整个程序运行期间只执行一次。 3. **按出现顺序执行**:如果一个类中有多个静态块,...
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基础时,掌握静态块的使用能够帮助我们编写更加高效和整洁的...
扩展类加载器是system class loader的父类加载器,但是它的父类加载器不是实际的`ClassLoader`实例,因此调用`getParent()`方法会返回`null`。 ##### 2.3 System Class Loader (系统类加载器) 系统类加载器,也被...
本文将通过实例代码和详细解释,阐述 Java 静态代码块与非静态代码块的区别和应用场景。 静态代码块 静态代码块是指使用静态关键字修饰的代码块,属于类级别的代码块。它的特点是:在类加载时自动执行的,且只执行...
静态初始化块是以`static`关键字标识的代码块,它在类被加载到Java虚拟机(JVM)时执行,且只执行一次。静态初始化块常用于设置类级别的变量,或者执行只应执行一次的初始化操作。例如,如果一个类需要在程序运行前...
其中,初始化阶段会执行类的静态代码块,这是`Class.forName()`方法中`initialize`参数所控制的行为。 总之,Java类加载器是Java语言强大灵活性和动态性的体现,通过合理的类加载策略,可以实现更高效、安全的应用...
首先,静态块在类被加载到Java虚拟机(JVM)时执行,且只会执行一次。静态块主要用于初始化类级别的变量,也就是静态变量。在上述示例中,`test`的输出表明静态块在程序开始时被调用。 初始化块,也称为实例初始化...
java语言中静态成员是指属于类的成员,而不是属于实例的成员。静态成员可以被所有实例共享,在程序中只有一份拷贝。静态成员包括静态变量、静态方法和静态初始化块。 1、静态变量 静态变量是指属于类的变量,它们...
在Java中,当一个类继承自另一个类时,实例化子类对象时构造函数与静态块的执行顺序遵循以下规则: 1. **静态块的执行**:首先,所有父类的静态块会被执行,然后再执行子类的静态块。这是因为静态块是在类加载时...
特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块、非静态块以及构造函数时,明确它们的初始化顺序有助于避免潜在的编程错误。 根据题目提供的内容,我们将重点讨论这些概念以及它们之间的相互关系...
在 Singleton 类的静态块中,我们首先对 a 和 b 进行初始化,接着创建了一个 Singleton 实例,并将其赋值给 singleton 变量。最后,在 main 方法中,我们通过 Singleton.getInstance() 方法获取 Singleton 实例,并...