我需要一些 Java 方面的帮助。我只是java的初学者。但我相信我的基础相当扎实。
当我的 2 个 ArrayList 对象遇到一个小问题时,我正在创建一个简单的 Java 应用程序。让我们称它们为 list1
和 list2
。如果我要使 list1 等于 list2 list1 = list2;
并将一个元素添加到 list2 list2.add(obj)
,该元素也会添加到 list1。
我做了研究,发现我应该改为这样做 list1 = new ArrayList(list2);
我不知道 java 对象像指针一样工作。我认为只有当 2 个对象相等时才会传递值。我什至创建了一个简单的测试应用程序,它可以设置和获取多个对象。同样,我等于两个对象。更改 1 个对象的元素似乎也会影响另一个对象。我不知道我应该如何在谷歌上搜索这个。这就是为什么我要告诉你整个故事。我只得到与 c 编程相关的文档。我觉得我的地基已经支离 splinter 。我现在才知道 =
是如何工作的。尝试做
int num1 = 666;
int num2 = num1;
num1 = 42;
这不影响 num2。然而,
Object obj1 = new Object();
Object obj2 = obj1;
obj1.changeSomeElement();
这会影响 obj2。
现在,我对 =
在 java 中的工作方式感到困惑。有人请分享一些有用的文档供我阅读。谢谢!
最佳答案
int num1 = 666;
int num2 = num1;
num1 = 42;
这是可行的,因为 int 是一种原始数据类型
Object obj1 = new Object();
Object obj2 = obj1;
obj1.changeSomeElement();
这不起作用,因为 Object 是引用数据类型
obj1 持有对创建的对象的引用,而您只是将相同的引用从 obj1 传递给 obj2
也就是说,obj1 & obj2 指的是同一个对象
无论您使用 obj1 还是 obj2,都会对同一个对象进行更改:)
Primtive vs Reference Data Types
关于原始数据类型与引用数据类型及其含义的非常好的解释
关于java - 当 2 个对象彼此相等时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318454/