构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。构造器是创建对象的重要途径,即使使用工厂模式、反射等方式创建对象,其实质依然是依赖于构造器。
当创建一个对象时,系统为这个对象的实例变量进行默认初始化,这种默认的初始化把所有的基本类型的实例变量设为0(对数值型实例变量)或false(对布尔型实例变量),把所有引用类型的实例变量设为null.
package chap5_5;
public class ConstructorTest {
public String name;
public int count;
public ConstructorTest(String name,int count) {
// TODO Auto-generated constructor stub
this.name=name;
this.count=count;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ConstructorTest tc=new ConstructorTest("疯狂Java讲义",90000);
System.out.println(tc.name);
System.out.println(tc.count);
}
}
实际上,当程序员调用构造器时,系统会先为该对象分配内存空间,并为这个对象执行默认初始化,这个对象已经产生了——–这些操作在构造器执行之前就都完成了。系统已经创建了一个对象,只是这个对象还不能被外部程序访问,当构造器的执行提执行结束后,这个对象作为构造器的返回值被返回,通常还会赋给另一个引用类型的变量,从而让外部程序可以访问该对象。
因此上面的ConstructorTest类不能再通过new ConstructorTest();代码来创建实例,因为该类不再包含无参数的构造器。
如果一个类里提供了多个构造器,就形成了构造器的重载。