public class practice2 {
//类定义String
String st1 = new String("abc");
practice2(){
}
//构造函数初始化st1
practice2(int i){
this.st1 = new String("xyz");
}
//测试类入口
public static void main(String[] args){
practice2 ts1 = new practice2();
System.out.println(ts1.st1);
practice2 ts2 = new practice2(1);
System.out.println(ts2.st1);
///~测试结果表明,构造函数是在对象创建时调用,它会覆盖类定义初始化的String
}
//类定义String
String st1 = new String("abc");
practice2(){
}
//构造函数初始化st1
practice2(int i){
this.st1 = new String("xyz");
}
//测试类入口
public static void main(String[] args){
practice2 ts1 = new practice2();
System.out.println(ts1.st1);
practice2 ts2 = new practice2(1);
System.out.println(ts2.st1);
///~测试结果表明,构造函数是在对象创建时调用,它会覆盖类定义初始化的String
}
}
上例的输出结果为:
abc
xyz
通过该例,可以很容易的发现,类初始化String域与构造器初始化String域的主要问题是初始化的顺序问题,构造器初始化会覆盖类初始化。