gpt4 book ai didi

java - 两个对象以某种方式互相更新

转载 作者:行者123 更新时间:2023-12-02 09:24:28 25 4
gpt4 key购买 nike

我有一个名为 savingAccount 的对象,当我在 main 上创建两个此类对象时,我可以设置用户初始帐户余额。当我创建第一个对象时,初始值设置为 3000,当我创建第二个对象时,我的第一个和第二个对象的初始值都设置为 2000

首先我认为这与公共(public)方法和类有关,但我将它们全部设置为私有(private)、 protected 等,问题仍然存在。

这是我的对象:

public class SavingsAccount {
private static double annualInterestRate = 0;
private static double savingsBalance = 0;
private static double monthlyInterest = 0;


SavingsAccount(double savingsBalance){
this.savingsBalance = savingsBalance;
}

void setAnnualInterestRate(double annualInterestRate){
this.annualInterestRate = annualInterestRate;

}


private static void updateSavingsBalance(){
savingsBalance = savingsBalance + monthlyInterest;
}

double getSavingsBalance(){
return savingsBalance;
}

}

这是我的司机:

    SavingsAccount saver1 = new SavingsAccount(3000.00);
System.out.println("User 1 balance: " + saver1.getSavingsBalance()); // 3000

SavingsAccount saver2 = new SavingsAccount(2000.00);
System.out.println("User 2 balance: " + saver2.getSavingsBalance()); // 2000

//2000 for both now
System.out.println("User 1 balance: " + saver1.getSavingsBalance());
System.out.println("User 2 balance: " + saver2.getSavingsBalance());

最佳答案

问题是您使用的是静态变量,而不是非静态(实例)变量。

每个静态变量只有一个体现 - 因此在您的情况下,无论您创建多少个 SavingsAccount 对象,它们都共享相同的 savingsBalance 数据。因此,当您(认为您是)更改 SavingAccount savingsBalance 之一时,您正在为所有这些帐户更改它

关于java - 两个对象以某种方式互相更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58436763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com