对象初始化
系统在生成对象时,会为对象分配内存空间,并自动调用构造方法对实例变量进行初始化
对象回收
对象不再使用时,系统会调用垃圾回收程序将其占用的内存回收
构造方法
- 方法名与类名相同
- 不定义返回类型
通常被声明为公有(public)
- 可以有任意多个参数
- 只能用来创建对象,不能显式地调用(在生成一个对象时,系统自动调用该类的构造方法为新对象初始化)
- 若未显式地声明构造方法,编译器隐含生成默认构造方法(一个类必须有构造方法)
默认构造方法
- 没有参数(内部类除外),方法体为空
- 使用默认方法初始化对象时,如果在类声明没有给出实际变量赋初值,则对象的属性为0或为空
- 构造方法也是类的方法成员,同样可以有参数
用来描述初始化对象
描述初始化算法的地方
编译器不可能知道你想怎么去初始化,只能人为制定
//银行账户类(无构造方法)
//此类定义以下3个属性
public class BankAccount{
String owerName; //户主名
int accountNumber; //银行账号
float balance; //余额
}
//银行测试类
public class BankTester{
public static void main(String args[ ]){
BankAccount myAccount=new BankAccount(); //构造一个账户实例
System.out.println("ownerName="+myAccount.ownerName);
System.out.println("accountNumber="+myAccount.accountNumber);
System.out.println("ownerName="+myAccount.balance);
//使用[对象].[属性]依次输出新构造的对象的三个属性
}
}
//运行结果
ownerName=null (String对象 类型自动初始化为null)
accountNumber=0 (int类型初始化为0 )
balance=0.0 (float自动初始化为0.0)
由上可见,java类中即使没有定义构造方法,系统也会为不同的数据类型赋予初值
(默认情况下,值类型初始化成0,引用类型定义为空)
自定义构造方法与方法重载
-
在生成对象时给构造方法传送初始值,为对象进行初始化
-
构造方法可以被重载
-
一个类中有两个及以上同名方法,但参数列表 不同,这种情况叫做重载,可以通过参数列表不同来辨别应该调用哪个方法
-
只要显式地声明了构造方法,编译器就不再生成默认的构造方法
-
可以显示地声明无参数的构造方法,方法体中可以定义默认初始化方式
为银行账户类声明构造方法
//为银行账户类声明带有三个参数的构造方法(创建对象时需要写上实参)
public BankAccount(String initName,init initAccountNumber,float initBalance){
ownerName=initName; //户主名
accountNumber=initAccountNumber;//账号
balance=initBalance;//余额
}
//假设一个新账号的初始余额可以为0,则可增加一个拥有两个参数的构造方法
public BankAcount(String initName,initAccountNumber){
ownerName=initName;
accountNumber=initAccountNumber;
balance=0.0f; //默认余额初始化为0
}
//无参的构造方法——自定义默认的初始化方式(虽无参数,方法体也有初始化逻辑)
public BankAccount(){
ownerName=" ";
accountNumber=999999;
balance=0.0f;
}