1、前言
构造器是一个特殊的方法,在类创建实例的时候执行这个方法进行初始化,java类必须包含一个或者一个以上的构造器。
2、Java类使用构造器初始化
当创建一个对象的时候,系统会为这个对象的实例变量进行默认初始化,这种默认初始化把所有的基本类型的实例变量设置为0(对数值型实例变量)或false(对布尔型实例变量),把所有引用类型的实例变量设置为null。测试代码如下:
package com.nxc.test;
/**
* Java 构造器的测试
*/
public class Constructor
{
private int id;
private String name;
private String address;
/**
* 程序的入口
* @param args
*/
public static void main(String[] args)
{
Constructor constructor = new Constructor();
System.out.println("id -->"
+ String.valueOf(constructor.id)
+ " "
+ "name -->" + constructor.name
+ " "
+ "address -->" + constructor.address);
}
}
测试结果:
id -->0 name -->null address -->null
3、Java类构造器的重载
同一个类里有多个构造器,多个构造器的形参列表不同,即构造器的重载。如果构造器A与构造器B、构造器C在同一类中,在构造器B中调用构造器A,构造器C中调用构造器B,为了不会重新创建一个Java对象,可以使用this关键字来调用相应的构造器(系统会根据this后括号中的实参来调用形参列表与之对应的构造器)测试代码如下:
package com.nxc.test;
/**
* Java 构造器的测试
*/
public class Constructor
{
private int id;
private String name;
private String address;
/**
* 自定义构造方法一
* @param id
*/
public Constructor(int id){
this.id = id;
System.out.println("come in constructor 1"
+ " "
+ String.valueOf(id));
}
/**
* 自定义构造方法二
* @param id
* @param name
*/
public Constructor(int id, String name){
this(id);
this.name = name;
System.out.println("come in constructor 2"
+ " "
+ String.valueOf(id)
+ " "
+ name);
}
/**
* 自定义构造方法三
* @param id
* @param name
* @param address
*/
public Constructor(int id, String name, String address){
this(id,name);
this.address = address;
System.out.println("come in constructor 3"
+ " "
+ String.valueOf(id)
+ " "
+ name
+ " "
+ address);
}
/**
* 程序的入口
* @param args
*/
public static void main(String[] args)
{
Constructor constructor = new Constructor(1, "Jack");
Constructor constructor1 = new Constructor(2, "Rose", "guangzhou");
System.out.println("id -->"
+ String.valueOf(constructor.id)
+ " "
+ "name -->" + constructor.name
+ " "
+ "address -->" + constructor.address);
System.out.println("id1 -->"
+ String.valueOf(constructor1.id)
+ " "
+ "name1 -->" + constructor1.name
+ " "
+ "address1 -->" + constructor1.address);
}
}
测试结果:
come in constructor 1 1
come in constructor 2 1 Jack
come in constructor 1 2
come in constructor 2 2 Rose
come in constructor 3 2 Rose guangzhou
id -->1 name -->Jack address -->null
id1 -->2 name1 -->Rose address1 -->guangzhou