静态代码块(☆☆☆☆☆):
在方法外面 类里面 static{}
随着类的加载而执行 只执行一次
做一些全局初始化的内容
优先于主方法执行
面试题:
class Student {
static {
System.out.println("Student 静态代码块");
}
{
System.out.println("Student 构造代码块");
}
public Student() {
System.out.println("Student 构造方法");
}
}
class Demo2_Student {
static {
System.out.println("Demo2_Student静态代码块");
}
public static void main(String[] args) {
System.out.println("我是main方法");
Student s1 = new Student();
Student s2 = new Student();
}
}
/*
执行结果是:
Demo2_Student静态代码块
我是main方法
Student 静态代码块
Student 构造代码块
Student 构造方法
Student 构造代码块
Student 构造方法
解释:执行main方法前必须先把Demo2_Student类的class文件加载到方法区,"Demo2_Student静态代码块"随着类的加载而执行一次
接着执行main方法 "我是main方法" 先执行
当执行到Student s1 = new Student();的时候 先把Student类的class文件加载到方法区,"Student 静态代码块"随着类的加载而执行一次
接着执行构造代码块"Student 构造代码块",接着执行构造方法"Student 构造方法"
当又执行到Student s1 = new Student()的时候,这时候Student类的class文件已经加载到方法区了 不需再再次加载了 所以 "Student 静态代码块" 不会在执行
接着执行构造代码块"Student 构造代码块",接着执行构造方法"Student 构造方法"
*/
期望你的回复 |
|