gpt4 book ai didi

Java vector 问题

转载 作者:行者123 更新时间:2023-12-01 16:40:44 26 4
gpt4 key购买 nike

Vector 中的元素是原始元素的克隆/副本吗?

SomeType myVar = new SomeType();
myVar.something = "AStringValue";
myVar.i = 123;

Vector<SomeType> v1 = new Vector<SomeType>();
v1.add(myVar);
Vector<SomeType> v2 = new Vector<SomeType>();
v2.add(myVar);

v1.get(0).i = 321;

在此代码之后,这些语句是否为 true v2.get(0).i == 321myVar.i == 321

最佳答案

不,Vector 包含对原始对象的引用 - 就像您的 myVar 变量一样。理解变量(或者任何表达式)实际上永远不可能拥有对象值是非常重要的。该值可以是基本类型值(整数、字符等)或对对象的引用,或者为 null。

当您调用v1.add(myVar)时,会将myVar的值复制到 vector 中...该值作为引用。当您更改引用所引用的对象时,该更改将通过对该对象的所有引用可见。

这样想:假设我有一栋红门的房子,并将我的地址提供给两个不同的人。第一个人过来把我的门漆成绿色。如果第二个人来看房子,他会发现门也是绿色的......因为他通过引用的副本查看同一栋房子 em>(本例中为街道地址)。

(顺便说一句,您是否仍然使用 Vector 而不是更常见的 ArrayList?您显然使用的是最新的 JDK,鉴于您正在使用泛型...)

关于Java vector 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3728653/

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