java的静态初始化
时间: 2023-11-10 14:02:34 浏览: 79
Java中的静态初始化是指在类加载时为静态变量赋值的过程。静态初始化使用静态代码块,格式为:
```
static {
// 静态变量赋值
}
```
静态变量只会被初始化一次,而且在类初始化时就会被初始化。如果一个类中有多个静态代码块,它们会按照在类中出现的顺序依次执行。
示例代码如下:
```
public class StaticDemo {
public static int a;
static {
a = 10;
System.out.println("执行静态代码块1,a=" + a);
}
static {
a = 20;
System.out.println("执行静态代码块2,a=" + a);
}
public static void main(String[] args) {
System.out.println("执行main方法,a=" + a);
}
}
```
输出结果为:
```
执行静态代码块1,a=10
执行静态代码块2,a=20
执行main方法,a=20
```
相关问题
java 静态初始化顺序
Java中的静态初始化顺序是指在一个类中,静态成员的初始化顺序。
在Java中,静态成员包括静态变量和静态代码块。静态变量是在类加载的过程中被初始化的,而静态代码块是在类加载时被执行的。
静态初始化顺序遵循以下规则:
1. 静态成员按照代码编写的顺序进行初始化,即先声明的静态成员会先被初始化。
2. 静态代码块在静态变量之后被执行。
例如,假设有一个包含静态变量和静态代码块的类:
```java
public class MyClass {
static int myVar = 10;
static {
System.out.println("Static code block");
}
}
```
在使用该类之前,Java虚拟机会先加载并初始化它。在加载过程中,首先会初始化静态变量`myVar`,然后执行静态代码块中的代码。
因此,输出结果为:
```
Static code block
```
总之,静态初始化顺序是按照静态成员的声明顺序进行初始化的,静态变量在静态代码块之前被初始化。
阅读全文