实例变量默认值

Mun*_*lam 1 java

我的书说局部变量和实例变量之间的关键区别之一是我们必须初始化局部变量,0如果你没有初始化它们,实例变量会得到一个默认值.在此之前不久我做了一个例子介绍构造函数,什么public voidpublic doublereturn做的.

请考虑以下我在本书中所做的示例.这里的平衡是一个实例variable.我们下面有两个构造函数.如果实例变量的默认值为零,为什么我需要第一个构造函数

public Account(){
        balance = 0;    
    }
Run Code Online (Sandbox Code Playgroud)

说如果我打电话的话Account acc = new Account(); balance = 0.它不会自动变为零吗?至少这是我对本书的理解

下面是我正在处理的完整代码

public class Account {
    private double balance;
    public Account(){
        balance = 0;    
    }
    public Account(double initialBalance){

        balance = initialBalance;
    }
    public void deposit(double amount){
        balance = balance+amount;
    }

    public void withdraw(double amount){
        balance = balance-amount;
    }

    public double getBalance(){
        return balance;
    }   
}



public class Test {
public static void main(String [] args){
    Account acc = new Account(500);
    acc.deposit(500);
    System.out.println(acc.getBalance());
}   
}
Run Code Online (Sandbox Code Playgroud)

Joa*_*uer 6

不需要第一个构造函数,因为你从来没有在任何地方调用它.

假设它某个地方调用,你不需要balance = 0它中的行,但有些人仍然会添加它,只是为了使它明确可见并清楚它是故意的(有时是无意中使用的自动内容).

如果您完全删除了构造函数并尝试Account使用just new Account()(没有任何参数)实例化,那么这将无法工作,因为您不再使用零参数构造函数(另一个神奇的事情:Java将为您生成一个,如果和只有你没有任何其他构造函数).

  • @cresjoy该变量将被设置为0而没有该行`balance = 0`.但正如约阿希姆指出的那样,它被添加以使**清楚*在创建对象时该值为零.它不是必需的,但它也没有伤害;-) (2认同)