📅  最后修改于: 2023-12-03 15:07:53.667000             🧑  作者: Mango
在Java中,静态修饰符可以用于类、变量和方法上,用来表示它们是静态的,即属于类本身而不是某个对象。在使用静态修饰符的过程中,类的静态成员会在类加载时自动初始化,并且静态块会在静态成员初始化后执行。
在Java中,类的加载过程可以分为以下三个阶段:
在类加载过程中,静态修饰符的作用主要体现在第三个阶段。
在Java中,静态变量是属于类本身的,因此会在类加载时(链接阶段的准备阶段)自动初始化。静态变量的默认值可以是0、false或者null,也可以是程序员显式指定的值。
public class MyClass {
// 静态变量,在类加载时自动初始化
public static int number = 1;
}
与静态变量不同,静态块中的语句仅在类第一次加载时执行。静态块为程序员提供了一种在类加载时执行一些额外操作的方式,比如读取配置文件或者向数据库建立连接等。
public class MyClass {
// 静态块,在类第一次加载时执行
static {
System.out.println("MyClass is loaded.");
}
}
在一个类中,可以定义多个静态块,在类加载时它们会按照定义顺序依次执行。对于一个类中的静态变量和静态块,它们的执行顺序是先静态变量再静态块,并且按照定义顺序执行。
public class MyClass {
// 第一个静态块
static {
System.out.println("First static block.");
}
// 静态变量
public static int number = 1;
// 第二个静态块
static {
System.out.println("Second static block. number=" + number);
}
}
以上代码的输出结果如下:
First static block.
Second static block. number=1
在Java中,静态修饰符可以用于类、变量和方法上,表示它们是静态的。在使用静态修饰符的过程中,类的静态成员会在类加载时自动初始化,并且静态块会在静态成员初始化后执行。静态块可以为程序员提供一种在类加载时执行一些额外操作的方式。在一个类中,静态块会按照定义顺序依次执行,而静态变量会在静态块执行前被初始化。