gpt4 book ai didi

java - 整数不可变

转载 作者:IT老高 更新时间:2023-10-28 11:33:08 24 4
gpt4 key购买 nike

我知道这可能很愚蠢,但是很多地方声称Java中的Integer类是不可变的,但是下面的代码:

Integer a=3;
Integer b=3;
a+=b;
System.out.println(a);

执行没有任何问题,给出(预期的)结果 6。因此有效地 a 的值发生了变化。这不意味着 Integer 是可变的吗?第二个问题和一点题外话:“不可变类不需要复制构造函数”。有人愿意解释原因吗?

最佳答案

不可变并不意味着 a 永远不能等于另一个值。例如,String 也是不可变的,但我仍然可以这样做:

String str = "hello";
// str equals "hello"
str = str + "world";
// now str equals "helloworld"

str 没有改变,而 str 现在是一个全新的实例化对象,就像您的 Integer 一样。所以 a 的值并没有发生变化,而是被一个全新的对象替换,即 new Integer(6)

关于java - 整数不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560176/

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