java - 当 2 个对象彼此相等时会发生什么

标签 java

我需要一些 Java 方面的帮助。我只是java的初学者。但我相信我的基础相当扎实。

当我的 2 个 ArrayList 对象遇到一个小问题时,我正在创建一个简单的 Java 应用程序。让我们称它们为 list1list2。如果我要使 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/

相关文章:

java - JTable:单击按钮时更改单元格背景

java - 简单的网络服务示例 tomEE 不工作

java - 使用 openjdk 13.0.2 运行时运行 .jar 文件会引发异常

java - 迭代器添加到数组列表的并发修改异常

java - 如何读取 Elasticsearch 快照

java - 检查方法链中的最后一个 getter 是否不为空

java - 在添加到 ArrayList 后删除偶数元素并返回修改后的 ArrayList

java - 从 AsyncTask 类返回数据

java - 如何使用 for 循环从 char 数组中绘制 Sprite

java - Selenium WebDriver (java) 可以与浏览器的检查工具元素选择器交互吗?