我可以在Java中将对象定义为另一个对象吗?

时间:2017-10-28 16:11:16

标签: java

在Java程序中,将对象设置为另一个对象是否正确?更具体地说,我正在学习二叉树,我注意到以下代码:

public Node find(int key)
{
    Node current = root;
    while(current.iData != key) 
    {
        if(key < current.iData)
        {
            current = current.leftChild;
        } else {
            //...
        }
    }
}

Node current = root;current - current.leftChild;都将对象设置为另一个对象。这是对的吗?

2 个答案:

答案 0 :(得分:2)

  

将对象设置为另一个对象。这是对的吗?

不,那不对。

实际发生的是,您正在将一个变量的引用更改为另一个对象。

所以:

Node current = root; // "current" will point at the same object as `root`.

current = current.leftChild; // "current" will point at the same object as `leftChild`.

注意 -

在使用=分配引用类型时,使用=分配基元类型时,行为完全不同。

答案 1 :(得分:1)

首先,您需要在Java中使用基本概念: Java通过引用操作对象,所有对象变量都是引用

所以,当你有Object o1Object o2时,实际上o1和o2只是对存储空间的引用,它包含对象而不是对象本身

当你有o1 == o2时,你正在比较两个引用而不是对象本身,但如果你想比较它们,你需要覆盖equals()方法。

现在,我们来谈谈你的情况:

Node current = root;这意味着当前和根指的是同一个对象(内存中的相同位置)。 所以只有一个对象和两个引用