分析程序的执行结果:
- 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 构造方法
分析:静态代码块随类的加载而加载,并且只调用一次;
构造代码块随对象的创建而加载,并且优先于构造方法,每创建一个对象加载一次 |
|