java面试题-静态代码块,构造代码块,构造方法的执行顺序问题

例子:

.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 构造方法
  1. 构造代码块:每创建一次对象就会执行一次,优先于构造函数执行
  2. 静态代码块随着类加载而加载,且只执行一次
  3. 静态代码块是优先于主方法执行
  4. 总的来说,优先级:静态代码块>构造代码块>构造方法.
  5. 上面的那个代码,有两个类,其中主方法在第二个类中,于是先执行第二个类,因为静态代码块的优先级最高,于是限制性第二个类的静态代码块,然后进入主方法,执行主方法。然后往下走,创建了student累的对象,执行该类的静态代码块,而且只执行一次,然后依次执行构造代码块,然后构造方法。

猜你喜欢

转载自blog.csdn.net/chaobin6/article/details/81190588