java - 实例变量默认值

标签 java

我的书上说,局部变量和实例变量之间的一个重要区别是我们必须初始化局部变量 如果您不初始化实例变量,则实例变量将获得默认值 0。在此之前不久我做了一个例子介绍构造函数,什么是public voidpublic 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/

相关文章:

java - SolrJ 无效的内容类型

java - Hadoop:mkdir:无法创建/用户

java - 默认参数值在 iReport 中有效,但在 JasperServer 中无效

java - Memcache实现设计

java - Visual Studio代码: Java code does not run at all

java - 停止方法执行并等待事件?

java - 当消费者从rabbitmq中的 channel 获取消息时,预取消息驻留在哪里

java - 编译前沙箱 Java 代码?

java - 查找并打开 C :/中的任何 .exe 文件

java - 在 "class only"jar 文件中提供 javadoc