java语言中的初始化块
1、什么是初始化块?在一个类中,用来对实例变量作初始化的语句块。
2、初始化块在何时被执行?
它在每一次构造对象时被执行且比构造器先执行。
3、对实例变量做初始化有三种方式?
1) 通过构造器实现初始化。
2) 在定义实例变量时就给它一个值。
3) 在类中,通过初始化块实现初始化。
4、初始化块的其它作用?
类体中只能定义实例变量和方法,不能直接写其它任何功能性的语句。
但因为可以有初始化块,所以可以在初始化块中写入功能性语句,通常这样的语句是用来在初始化的时候起一些作用。
java语言中的静态初始化块
1、什么是静态初始化块?
在一个类中,用static 修饰的语句块。或者说加了static的初始化块。
2、它的作用是什么?
它用来对static变量作初始化。
3、它在何时被执行?
它在第一次加载类时被执行且只执行一次;与对象的创建无关。
注意:
(1)第一次加载类指的是:当某个类的名称第一次出现了则称之为类的加载。一次程序的运行,一个类只加载一次,所谓第一次加载类强调的是这个类第一次出现。 静态变量也是在类的第一次加载时即分配内存空间初始化。
(2)正因为静态初始化块和静态变量在类第一次加载时即被执行和初始化,所以它们比任何对象变量或初始化块(构建对象时执行)都执行的早。
public class Test {
public Test() {
System.out.println("Constructor called:构造器被调用");
}
static {
System.out.println("Static block called:静态块被调用");
}
{
System.out.println("Instance initializer called:初始化块被调用");
}
public static void main(String[] args) {
new Test();
System.out.println("=======================");
new Test();
}
}
结果:
Static block called:静态块被调用
Instance initializer called:初始化被调用
Constructor called:构造器被调用
=======================
Instance initializer called:初始化被调用
Constructor called:构造器被调用