轻过 51 class Menu New an object int i=99; Depth o new Depth(); boolean b true; intj=f(i); Call a method Class classname inta;下面是一个初始化块 {a=0; 返回 domokminein
5-11 Programming in Java class Menu { int i = 99; Depth o = new Depth(); boolean b = true; int j = f(i); … } New an object Call a method 返回 初始化过程 Class classname { int a; //下面是一个初始化块 { a = 0; … } … } Class classname { int a; //下面是一个初始化块 { a = 0; … } … }
1.在一个类里变量初始化顺序由定义顺序决定的,在任 何方法(包括构造器)之前得到初始化 2.首先初始化static对象(如果它们尚未由前一次对象创 建过程初始化),然后初始化非static对象 例:创建一个对象的过程: ·类型为A的一个对象首次创建或A类的stati c成员首次访 问时,JAVA解释器必须找到A.cl ass ·A.cl ass的所有初始化模块都会运行(static初始化 仅发生一次) ·创建一个newA()时,首先在内存堆中为其分配足够空 间;然后清零,将A中所有基本类型设为默认值 ·显式初始化、执行构造器 返回
5-12 Programming in Java 初始化顺序 1. 在一个类里变量初始化顺序由定义顺序决定的,在任 何方法(包括构造器)之前得到初始化 2. 首先初始化static对象(如果它们尚未由前一次对象创 建过程初始化),然后初始化非static对象 例:创建一个对象的过程: • 类型为 A的一个对象首次创建或 A类的static成员首次访 问时,JAVA解释器必须找到A.class • A.class的所有初始化模块都会运行( static 初始化 仅发生一次) • 创建一个new A()时,首先在内存堆中为其分配足够空 间;然后清零,将 A中所有基本类型设为默认值 • 显式初始化、执行构造器 返回
恒1便行下 Class Card{ Tag t1 new Tag(1); Tag(1) CardO Tag(2) System.out.println("Card("); t3 new Tag(33); Tag(3) Tag t2 new Tag(2); void f0{System.out.println(“f0”);} CardO Tag t3 new Tag(3); 3 Tag(33) Card t=new CardO); f t.f0; 返回
5-13 Programming in Java Class Card{ Tag t1 = new Tag(1); Card() { System.out.println(“Card()”); t3 = new Tag(33); } Tag t2 = new Tag(2); void f() {System.out.println(“f()”); } Tag t3 = new Tag(3); } … Card t = new Card(); t.f(); Tag(1) 返回 Tag(33) Tag(2) Tag(3) Card() f() 初始化顺序示例一
初假么段行示州() Class Bowl Bowl(int maker){ System.out.println("Bowl("+maker +")") void f(int maker){ System.out.println(“f(”+maker+“)”);} Class Table static Bowl b1 new Bowl(1); Table({ System.out.println("Table()"); b2.f1);} void f2(int maker){ System.out.println(“2(”+maker+)");} static Bowl b2 new Bowl(2);
5-14 Programming in Java Class Bowl { Bowl(int maker) { System.out.println(“Bowl(” + maker + “)”); } void f(int maker) { System.out.println(“f(” + maker + “)”); } } Class Table { static Bowl b1 = new Bowl(1); Table() { System.out.println(“Table()”); b2.f(1); } void f2(int maker) { System.out.println(“f2(” + maker + “)”); } static Bowl b2 = new Bowl(2); } 初始化顺序示例二( 1 )
初g么川段行示州(二 Class Cupboard Bowl b3=new Bowl(3); static Bowl b4=new Bowl(4); Cupboard({ System.out.println("Cupboard()"); b4.f2); } void f3(int maker){ System.out.println(“f3(”+maker+)"); static Bowl b5 new Bowl(5);
5-15 Programming in Java Class Cupboard { Bowl b3 = new Bowl(3); static Bowl b4 = new Bowl(4); Cupboard() { System.out.println(“Cupboard()”); b4.f(2); } void f3(int maker) { System.out.println(“f3(” + maker + “)”); } static Bowl b5 = new Bowl(5); } 初始化顺序示例二( 2 )