为什么ArrayList.add()将值定义为a = b时将值添加到Java中的多个arraylist?

来源:爱站网时间:2021-12-01编辑:网友分享
我最近在Java中遇到了一个怪异的“功能”,这意味着当我将项目添加到另一个列表时,ArrayList似乎神奇地添加了项目。面对这个问题该怎么解决呢,爱站技术小编用一篇文章几分钟的时间给大家详细的讲解一下内容。 i = new ...

问题描述


我最近在Java中遇到了一个怪异的“功能”,这意味着当我将项目添加到另一个列表时,ArrayList似乎神奇地添加了项目。见下文:

List i = new ArrayList();
List i2 = i;
i.add(77);
System.out.println(i);
System.out.println(i2);

该程序提供输出:

[77]
[77]

但是,如果仅用整数替换列表:

int i = 5;
int i2 = i;
i = 7;
System.out.println(i);
System.out.println(i2);

它按预期的效果工作

7
5

为什么会发生,当我执行i时如何停止i2i.add()成为同一列表?

思路:


int之类的原语在这方面与ArrayList之类的对象有所不同。对原语使用=将产生该原语的副本,而对一个对象执行此操作将给您同一对象。如果然后尝试使对象变异(例如.add()),则该对象将被变异,并且引用该对象的两个变量都将能够看到它。

要制作“软拷贝”(包含相同元素的其他列表),可以使用现有的ArrayList调用ArrayList的构造函数:

List i = new ArrayList();
List i2 = new ArrayList(i);

 以上内容就是爱站技术频道小编为大家分享的为什么ArrayList.add()将值定义为a = b时将值添加到Java中的多个arraylist? 看完以上分享之后,大家应该都知道是为什么了吧。

上一篇:当我在Java上的主机Snake游戏中吃东西时如何添加尾巴?

下一篇:尝试通过void方法(java)使用Instance变量

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载