静态数据的初始化不太明白,高手帮我看看这段代码
class Bowl { Bowl(int marker) { System.out.println("Bowl(" + marker + ")"); } void f(int marker) { System.out.println("f(" + marker + ")"); } } class Cupboard { Bowl b3 = new Bowl(3); static Bowl b4 = new Bowl(4); Cupboard() { System.out.println("Cupboard()"); b4.f(2); } void f3(int marker) { System.out.println("f3(" + marker + ")"); } static Bowl b5 = new Bowl(5); } class Table { static Bowl b1 = new Bowl(1); Table() { System.out.println("Table()"); b2.f(1); } void f2(int marker) { System.out.println("f2(" + marker + ")"); } static Bowl b2 = new Bowl(2); } public class StaticInitialization { public static void main(String[] args) { System.out.println("Creating new Cupboard() in main"); new Cupboard(); System.out.println("Creating new Cupboard() in main"); new Cupboard(); t2.f2(1); t3.f3(1); } static Table t2 = new Table(); static Cupboard t3 = new Cupboard(); } ///:~ 这段代码的输出结果是: Bowl(1) Bowl(2) Table() f(1) Bowl(4) Bowl(5) Bowl(3) Cupboard() f(2) Creating new Cupboard() in main Bowl(3) Cupboard() f(2) Creating new Cupboard() in main Bowl(3) Cupboard() f(2) f2(1) f3(1) 为什么显示结果会是这样? 我尤其不明白为什么Bowl(1)和Bowl(2)会显示在Bowl(4)和Bowl(5)前面。为什么先初始化static Bowl b1
1.变量定义的顺序决定了初始化的顺序 2.当要使用到静态变量时就会对其进行初始化 3.静态初始化在非静态初始化之前,所以就会有您所说的"为什么Bowl(1)和Bowl(2)会显示在Bowl(4)和Bowl(5)前面". Good luck!
答:咚滴确很不错噢的详情>>