如何避免两个对象实际上是相同的(具有相等的内存地址)?

How do I avoid having two objects actually being the same (having equal memory address)?

提问人:Kristina 提问时间:10/14/2021 更新时间:10/14/2021 访问量:97

问:

我创建了一个 Node 类,它在构造函数中采用 a 值 (int)。它还可以将另一个节点存储为“next”。我发现,当我像这样创建节点时:

public void methodSignature(int value) {Node node = new Node(value);}

在一个方法中,然后在该方法的另一次调用中,如果输入相同,则创建完全相同的对象。为什么会这样?我能做些什么来避免它?这是我的程序出现问题的原因。

Java 对象 相等

评论

0赞 10/14/2021
你是如何确定它创造了“完全相同的对象”的?你刚刚打印出哈希码或类似的东西吗?
0赞 Sourabh Bhat 10/14/2021
是单例吗?Node 构造函数是什么样子的?System.out.println(new Node(value) == new Node(value)) 显示什么?您可以编辑您的问题以包含更多信息。
0赞 Kristina 10/14/2021
我是这样测试的: .可以肯定的是:意味着它们具有相同的内存地址,对吧?if(node == (anotherNode.next)) {System.out.println("true")}==
1赞 Kristina 10/14/2021
System.out.println(new Node(1) == new Node(1));显示错误...嗯,我想我可能误解了我的程序出了什么问题。但这很有帮助。谢谢。
0赞 maloomeister 10/14/2021
嗯,这听起来像是实际上指的是你所说的“the”。anotherNode.nextnode

答: 暂无答案