- 当类中没有构造器的时候,系统会提供一个默认的无参构造器,若域没有被显示给予初值,则自动赋为默认值:int=0,Boolean=false,String=null;(若定义了至少一个构造器,但没有定义无参构造器,则若构造对象时没提供参数会报错);
- 调用构造器具体处理步骤:
- 1.所有数据域被初始化为默认值(0、false、null);
- 2.按照在类中出现的次序,一次执行所有域初始化语句(域声明时给予默认值的语句)和初始化块;
- 3.如果构造器第一行调用了第二个构造器,则调用第二个构造器;
- 4.执行这个构造器的主体;
对第2步的代码解释:
class Abc{
String name = "huahua"; //域初始化(声明)语句在前
{
this.name = "piapia"; //初始块语句在后
}
public String getName() {
return this.name;
}
}
public class Demo8 {
public static void main(String[] args) {
Abc a = new Abc();
System.out.println(a.getName());
}
}
//输出结果:piapia
class Abc{
{
this.name = "piapia"; //初始块语句在前
}
String name = "huahua"; //域初始化(声明)语句在后
public String getName() {
return this.name;
}
}
public class Demo8 {
public static void main(String[] args) {
Abc a = new Abc();
System.out.println(a.getName());
}
}
//输出结果:huahua