执行顺序: 1)当没有new对象(有普通方法)时: 构造代码块和构造方法均不会执行,此时有:静态代码块>main方法>普通代码块 public class Demo4 { { System.out.println("构造代码块"); } public Demo4(){ System.out.println("构造方法"); } public static void a(){ System.out.println("普通代码块"); } static { System.out.println("静态代码块"); } public static void main(String[] args) { System.out.println("main方法执行"); System.out.println("-------------------------"); a(); } } 结果: 静态代码块 main方法执行 ------------------------- 普通代码块
2)当new对象之后时:静态代码块>main方法>构造代码块>构造方法>普通代码块 public class Demo4 { { System.out.println("构造代码块"); } public Demo4(){ System.out.println("构造方法"); } public void a(){ System.out.println("普通代码块"); } static { System.out.println("静态代码块"); } public static void main(String[] args) { System.out.println("main方法执行"); System.out.println("-------------------------"); new Demo4().a(); } } 结果: 静态代码块 main方法执行 ------------------------- 构造代码块 构造方法 普通代码块
方法之间的访问:普通方法可以访问静态方法和普通方法,静态方法可以访问静态方法,如果想访问普通方法必须new对象在访问。