类成员属性、静态变量、静态块、普通块、构造方法的加载顺序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| package com.ubuntuvim.clazzinit;
public class StaticBlockMemberLoadingSort {
{ System.out.println("1"); }
public StaticBlockMemberLoadingSort() { System.out.println("2"); }
static { System.out.println("3"); }
static private int a = f1();
private static int f1() { System.out.println("4"); return 10; }
public static void main(String[] args) { StaticBlockMemberLoadingSort staticBlockMemberLoadingSort = new StaticBlockMemberLoadingSort(); } }
|
执行结果:
一个很典型的面试题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| package com.ubuntuvim.clazzinit;
public class StaticBlockMemberLoadingSort2 {
static StaticBlockMemberLoadingSort2 staticBlockMemberLoadingSort2 = new StaticBlockMemberLoadingSort2();
static { System.out.println("1"); }
{ System.out.println("2"); }
public StaticBlockMemberLoadingSort2() { System.out.println("3"); System.out.println("a = " + a + ", b = " + b); }
public static void f1() { System.out.println("4"); }
int a = 110;
static int b = 120;
public static void main(String[] args) {
StaticBlockMemberLoadingSort2.f1();
System.out.println(StaticBlockMemberLoadingSort2.b);
} }
|
执行结果: