gpt4 book ai didi

java - Java是按引用返回还是按值返回

转载 作者:太空狗 更新时间:2023-10-29 22:45:49 25 4
gpt4 key购买 nike

我有一个 HashMap:

private HashMap<String, Integer> cardNumberAndCode_ = new HashMap<String, Integer>();

然后我这样做:

Integer balance = cardNumberBalance_.get(cardNumber);
System.out.println(balance);
balance = 10;
Integer newBalance = cardNumberBalance_.get(cardNumber);
System.out.println(newBalance);

第一次打印 1000,第二次打印 1000,值不变。为什么 Java 按值而不是按引用返回 Integer?

最佳答案

get 方法返回对存储整数的引用的副本...

为存储此副本的变量分配一个新值以指向值 10不会更改映射中的引用。

如果您可以执行 balance.setValue(10) 就可以了,但是由于 Integer 是一个不可变的类,所以这不是一个选项。

如果您希望更改在 map 中生效,您必须将余额包装在一个(可变的)类中:

class Balance {
int balance;
...
}

Balance balance = cardNumberBalance_.get(cardNumber);
System.out.println(balance.getBalance());
balance.setBalance(10);
Balance newBalance = cardNumberBalance_.get(cardNumber);
System.out.println(newBalance.getBalance());

但是你可能想做这样的事情:

cardNumberBalance_.put(cardNumber, 10);

关于java - Java是按引用返回还是按值返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297937/

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