Java中存在静态代码块,格式为
static{
语句;
}
他是在类里方法外的,他是随着类的加载而执行的,而且只执行一次
作用是给类进行初始化
class A{
static{
System.out.println("A");
}
public static void out(){
System.out.println("OUT");
}
}
public class Test{
static{
System.out.println("B");
}
public static void main(String[] args){
A a = new A();//会执行A类中的静态代码块
System.out.println("C");
A a1 = null;//不会执行A类中的静态代码块
A.out();//会执行A类中的静态代码块
}
static{
System.out.println("D");
}
}
如上所示,输出结果为:
B
D
A
C
OUT
他的优先级:
静态代码块>构造代码块>构造方法
静态代码块给类初始化
构造代码块给对象初始化
构造方法给对应对象初始化
class A{
static{
System.out.println("A");
}
{
System.out.println("B");
}
A(){
System.out.println("C");
}
A(int i){
System.out.println("D");
}
}
public class Test{
public static void main(String[] args){
A a = new A(1);
}
}
如上输出为:
A
B
D