当前位置: 首页 > 知识库问答 >
问题:

当两个对象相等时会发生什么

蓝侯林
2023-03-14

我做了研究,发现应该这样做list1=new ArrayList(list2);我不知道java对象像指针一样工作。我以为只有当两个对象相等时才会传递值。我甚至创建了一个简单的测试应用程序,它可以设置和获取一个对象的数量。再一次,我把这两个对象都等同起来。更改一个对象的元素似乎也会影响另一个对象。我不知道该怎么在谷歌上搜索这个。所以我才把整个故事都告诉你。我只得到与c编程有关的文档。我觉得我的底子都碎了。我现在才知道=是如何工作的。我试着做

    int num1 = 666;
    int num2 = num1;
    num1 = 42;

这不影响Num2。然而,

    Object obj1 = new Object();
    Object obj2 = obj1;
    obj1.changeSomeElement();

这会影响Obj2。
现在,我对=在Java中如何工作感到困惑。请分享一些有用的文件给我看。谢谢!

共有1个答案

宓茂才
2023-03-14
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,都对同一个对象进行更改:)

 类似资料:
  • 问题内容: 似乎以下代码应返回true,但返回false。 这有什么意义? 问题答案: 常规()和严格()相等之间的唯一区别是,严格相等运算符禁用类型转换。由于已经在比较两个相同类型的变量,因此使用的相等运算符的类型无关紧要。 不管您使用常规相等还是严格相等,对象比较仅 在您比较相同的精确对象时得出 。 也就是说,给定,,,但。 两个不同的对象(即使它们都具有零或相同的精确属性)也永远不会相等地进

  • 本文向大家介绍如何判断两个对象相等?相关面试题,主要包含被问及如何判断两个对象相等?时的应答技巧和注意事项,需要的朋友参考一下 提供另一种写法: 当然JSON.stringify(obj)==JSON.stringify(obj)执行速度是最快的

  • 据我所知,两个不相等的对象可以具有相同的哈希代码。当添加或从HashMap java中检索时,将如何处理这个问题?

  • 问题内容: 我的老师给我一个问题: “用Java创建对象时会发生什么”。 据我所知,创建对象时会发生内存分配,变量初始化和构造函数方法调用。 但是我的老师说我几乎是对的。后面的两件事是正确的,除了内存堆。相反,他说发生了内存分配。我认为对象存储在堆中,所以我的老师错了。你这样认为吗? 问题答案: 与往常一样,找到针对此类问题的解决方案的最佳位置是Java语言规范。 具体来说,从创建新实例的部分可以

  • 问题内容: 我知道Java I / O使用装饰器模式。但是我觉得我理解它的错。 请说明两个代码段之间的区别: 片段1: 该应用程序符合我的期望,并且在控制台中看到结果。 片段2: 我尝试两次包装ObjectInputStream和ObjectOutputStream: 这段代码只是挂断了。我不明白为什么。请澄清。 聚苯乙烯 这仅仅是理论问题。 更新 真正的挂断行为是因为我使用管道而发生的(根据EJ

  • 我创建了的两个实例,如下所示。一个是从创建的,另一个是相同的,但在开头加上了一些附加的数字。使用方法比较它们时,它返回: 我认为添加的数字被丢弃了,并且两者给出了相同的UUID字符串值。为什么会这样?