我的书上说,局部变量和实例变量之间的一个重要区别是我们必须初始化局部变量
如果您不初始化实例变量,则实例变量将获得默认值 0
。在此之前不久我做了一个例子介绍构造函数,什么是public void
和public double
和
返回
做。
请考虑我刚刚在书中所做的以下示例。这里的 balance 是一个实例 variable
。我们在它下面有两个构造函数。如果实例变量的默认值为零,为什么我需要第一个构造函数
public Account(){
balance = 0;
}
说如果我调用类似 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());
}
}
最佳答案
您不需要第一个构造函数,因为您永远不会在任何地方调用它。
假设它被在某处调用,您不需要在其中添加 balance = 0
行,但有些人仍会添加它,只是为了使其明确可见并清楚它是有意的(有时无意中使用了自动的东西)。
如果您完全删除构造函数并尝试仅使用 new Account()
(不带任何参数)来实例化一个 Account
,那么这将无法正常工作不再有零参数构造函数(另一件神奇的事情:Java 会为您生成一个当且仅当您没有任何其他构造函数)。
关于java - 实例变量默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38459422/