类中域为基本类型可以被自动初始化为0,对象引用会被初始化为null。
初始化对象引用的方法
{
1.在定义对象的地方。
2.在类的构造器中
3.在正要使用对象之前(惰性初始化)
4.实例初始化
}
class Soap {
private String s;
Soap() {
print("Soap()");
s = "Constructed";//2<span style="font-size:14px;">在类的构造器中</span>
}
public String toString() { return s; }
}
public class Bath {
private String // 1<span style="font-size:14px;">在定义对象的地方</span>
s1 = "Happy",
s2 = "Happy",
s3, s4;
private Soap castille;
private int i;
private float toy;
public Bath() {
print("Inside Bath()");
s3 = "Joy";
toy = 3.14f;
castille = new Soap();//<span style="font-size:14px;">4实例初始化</span>
}
// Instance initialization:
{ i = 47; }
public String toString() {
if(s4 == null) // Delayed initialization:
s4 = "Joy";
return
"s1 = " + s1 + "\n" +
"s2 = " + s2 + "\n" +
"s3 = " + s3 + "\n" +
"s4 = " + s4 + "\n" +
"i = " + i + "\n" +
"toy = " + toy + "\n" +
"castille = " + castille;
}
public static void main(String[] args) {
Bath b = new Bath();//<span style="font-size:14px;">3在正要使用对象之前(惰性初始化)</span>
print(b);
}
} /* Output:
Inside Bath()
Soap()
s1 = Happy
s2 = Happy
s3 = Joy
s4 = Joy
i = 47
toy = 3.14
castille = Constructed