静态代码块
- 格式:
static
{
静态代码块中的执行语句
}
- 特点:
随着类的加载而执行,只执行一次,用于给类进行初始化,并优先于主函数执行
考虑如下java语句
class StaticCode { static { System.out.println("a"); } } public class Demo { static { System.out.println("b"); } public static void main(String[] args) { new StaticCode(); new StaticCode(); System.out.println("end"); } static { System.out.println("c"); } }
输出结果为:
b
c
a <==虽然有两个调用StaticCode的语句,但是因为其中只包含静态代码块,而静态代码块只执行
一次,所以只输出一个a
end
只有涉及到类中的内容的时候,类才会加载,静态代码块才会执行
StaticCode m = null; <==类没有被加载
s = new StaticCode(); <==类被加载了,因为用到了类中的构造函数StaticCode(),所以静态代码块
会被执行
所以判断一个类有没有被加载,可以用静态代码块来验证
class StaticCode { StaticCode() { System.out.println("c"); } static { System.out.println("a"); I } { System.out.println("b"); II } StaticCode(int x) { System.out.println("hah"); III } public static void test() { System.out.println("succeed"); } } public class Demo { public static void main(String[] args) { new StaticCode(5); } }
I ----- 静态代码块给类进行初始化
II ----- 构造代码块给对象进行初始化
III ----- 构造函数给对应对象进行初始化
输出结果:
a
b
hah
注意:静态代码块只可以访问静态变量
构造代码块可以访问到
时间: 2024-11-13 12:33:43