构造方法的作用:
- 1.创建对象
- 2.创建对象的同时,给实例变量赋值
成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。
实例变量没有手动赋值的时候,系统默认赋值,那么这个系统默认 值是在什么时候完成的呢?是在类加载的时候吗?
答案:不是,因为类加载的时候只加载了代码片段,还没来得及创建对象。所以此时实例变量并没有初始化。
实际上,实例变量的内存空间是在构造方法执行过程当中完成开辟的,完成初始化的。
系统在默认赋值的时候,也是在构造方法执行当中完成的赋值。
实例变量默认值:
类型: 默认值:
byte,short,int,long 0
float,double 0.0
boolean false
引用数据类型 null
详细看代码和注释,相信你会懂的。
“构造器02”类(Constructor02.class)
public class Constructor02 {
public static void main(String[] args) {
// 创建对象act1
Account act1 = new Account();
// 查看对象的实例变量的值
System.out.println("账号1:"+act1.getActno()); // 账号1:null
System.out.println("余额1:"+act1.getBalance()); // 余额1:0.0
System.out.println("******************");
// 给对象act1的实例变量赋值
act1.setActno("6236...");
act1.setBalance(100.0);
// 再次查看
System.out.println("账号1:"+act1.getActno()); // 账号1:6236...
System.out.println("余额1:"+act1.getBalance()); // 余额1:100.0
System.out.println("******************");
// 创建对象act2, 传递实参,调用带参数构造方法
Account act2 = new Account("7256...",200);
System.out.println("账号2:"+act2.getActno()); // 账号2:7256...
System.out.println("余额2:"+act2.getBalance()); // 余额2:200.0
System.out.println("******************");
}
}
“账户”类(Account.class)
class Account{
// 账户
private String actno;
// 余额
private double balance;
// 无参数构造方法
public Account() {
// 如果没有给实例变量赋值,系统会默认赋值
// 初始化实例变量的值
// actno = null;
// balance = 0.0
}
// 带参数构造方法
public Account(String actno,double balance) {
this.actno = actno;
this.balance = balance;
}
// getter和setter方法
public String getActno() {
return actno;
}
public void setActno(String actno) {
this.actno = actno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}