2017-10-28 94 views
1

在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;都設置一個對象與另一個相等。這是正確的嗎?

+0

這不是它在做什麼,沒有。您正在設置當前不同的實例。 – ChiefTwoPencils

+0

閱讀並理解https://stackoverflow.com/a/18740042/6194785 –

回答

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

好的答案,我只想補充說,進一步閱讀OP可以在[創建對象的Java教程]中找到更多詳細信息(https:// docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html)。 –

1

首先,您需要在Java中需要一個基本概念:Java通過引用操縱對象,並且所有對象變量都是引用

所以,當你有Object o1Object o2,其實O1和O2都持有對象不是對象本身內存空間只有引用。

當您有o1 == o2時,您將比較兩個引用而不是對象本身,但如果要比較它們,則需要覆蓋equals()方法。

現在,讓我們來談談你的情況:

Node current = root;這意味着當前和根指的是同一個對象(在內存中的相同位置)。 所以只有一個對象和兩個引用

相關問題