# 深入构造器
> 构造器的最大用处就是创建对象。
如果在类定义中没有显式的定义一个构造器,则编译器在编译源文件时,会创建一个没有参数、没有方法体执行语句的空的构造器。
如果显式的定义了一个构造器,则上述的空的构造器则不会存在。
在调用构造器创建对象的时候,系统会为每个对象的实例变量设置默认值
> 基本数据:数值型的为0,布尔类型的为false,char类型的为’\u0000’;
> 引用数据类型:null;
> 如果在方法中定义的局部变量:系统是不会对其设置默认值的,必须要显式的通过赋值运算符=给变量赋值。
**通过构造器为成员变量定义初始化值,这也是构造器的最最重要的用途之一。**
## 构造器重载
如果需要在构造器中调用另外一个构造器,可以使用 this(params);
在构造器中调用构造器,必须把this(params)放在有效的执行语句第一行,而且不允许出现两条this(params)语句。
~~~
public Client1(int age, String code, String name) {
this(age);
this.name = name;
}
public Client1(String code) {
this.code = code;
}
public Client1(int age) {
// 复用
if (age < 0 || age > 150) {
System.out.println("不合法的年龄数据");
} else {
this.age = age;
}
}
~~~