Java中static静态变量的初始化完全解析
在Java中,静态变量(static变量)是独立于对象的变量,它们在类被加载时就被初始化,而不是在每次创建对象时都被初始化。本文将详细介绍Java中静态变量的初始化过程。
静态变量的初始化时机
静态变量是在类加载时被初始化的,具体包括以下3种情况:
- 类的静态变量在类加载时就初始化
- 在类的静态变量成员所在的类被初始化时初始化类的静态变量
- 在调用类的静态方法时初始化类的静态变量,即第一次使用类的时候初始化类的静态变量
静态变量的初始化方式
静态变量的初始化有以下3种方式:
1. 直接赋值
静态变量可以直接在定义它的类中进行赋值,例如:
public class StaticDemo {
public static int count = 0;
static {
System.out.println("静态代码块初始化count:" + count);
}
}
2. 静态代码块
静态代码块是在类被加载时自动执行的代码块。静态代码块中可以对静态变量进行初始化,例如:
public class StaticDemo {
public static int count;
static {
count = 0;
System.out.println("静态代码块初始化count:" + count);
}
}
3. 静态工厂方法
在静态工厂方法中,可以对静态变量进行初始化,例如:
public class StaticDemo {
public static int count;
public static StaticDemo getInstance() {
count = 0;
return new StaticDemo();
}
}
静态变量的读取
静态变量的读取有以下2种方式:
- 类名.变量名
- 对象名.变量名 (不推荐)
示例1:直接赋值
public class StaticDemo {
public static int count = 0;
static {
count = 1;
System.out.println("静态代码块初始化count:" + count);
}
public static void main(String[] args) {
System.out.println("直接赋值初始化count:" + StaticDemo.count);
}
}
输出如下:
静态代码块初始化count:1
直接赋值初始化count:1
示例2:静态代码块
public class StaticDemo {
public static int count;
static {
count = 2;
System.out.println("静态代码块初始化count:" + count);
}
public static void main(String[] args) {
System.out.println("静态代码块初始化count:" + StaticDemo.count);
}
}
输出如下:
静态代码块初始化count:2
静态代码块初始化count:2
结语
本文从静态变量的初始化时机、初始化方式和读取方式三个方面,详细介绍了Java中静态变量的初始化过程。除此之外,还提供了两个示例,希望能够对读者更好地理解Java中静态变量的初始化过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中static静态变量的初始化完全解析 - Python技术站