package com.interviw; /** * 实例化一个对象的时候 先执行静态块--> 赋值静态变量 ---> 构造方法 * 如果是继承的话 父类静态块--子类静态块--父类代码块--子类代码块--父类构造方法--子类构造方法 */ public class StaticTest { static { count1 = 2; count2 = 7; } private static StaticTest st = new StaticTest(); // 第一步 调用了构造方法 count1 = 1 coun2 = 2 private static int count1; // 第二步 count1 不变 没有赋值操作 什么都没做 private static int count2 = 5; // 第三步 有赋值操作 count2是值被覆盖 public StaticTest(){ count1++; count2++; } public static StaticTest getInstance(){ return st; } public static void main(String[] args) { //StaticTest st = StaticTest.getInstance(); StaticTest st2 = new StaticTest(); System.out.println(StaticTest.count1); System.out.println(StaticTest.count2); } }