也能用这个方法初始化对象
classMeasurement{Depthd=newDepth();//...}
可以调用一个方法来初始化
classCInit{inti=f();//...}当然这个方法也可以使用参数classCInit{inti=f();intj=g(i);//...}但是参数不能时尚未初始化的其他成员classCInit{intj=g(i);inti=f();//...}//ERROR!!!!!
初始化顺序
在一个类里,初始化的顺序是由变量在类内的定义顺序决定的。即使变量定义大量分布于方法定义的中间,那些变量仍然会在调用任何方法之前得到初始化——当然也在构造函数之前。Eg.OrderOfInitialization.java
静态数据初始化
静态数据成员仅在类被装载的时候初始化Eg.StaticInitialization.java
初始化顺序
1.假设一个类型为Dog的对象首次创建时,或者Dog类的静态成员/方法首次访问时,JVM必须找到Dog.class2.找到Dog.class后,它的所有静态初始化模块都会运行。因此,静态初始化仅发生一次3.newDog()时,new语句会在内存中分配一定的空间4.这个空间讲会被清零,因此Dog中所有的数据成员都得到了缺省值5.执行定义初始化6.执行构造函数
显式初始化
Java允许我们将其他初始化
工作划分到一个类内特殊的“静态构造从句”(又叫“静态块”)里Eg.ExplicitStatic.java可以用类似方法初始化非静态成员Eg.Mugs.java