2016-02-05 25 views
0

假設有一個名爲Hello的類,我將如何聲明名爲var1和var2的變量是對類Hello中的對象的引用? 我認爲它只是你好var1,var2;也可以只使用默認的構造函數構造類Hello對象的一個​​實例Hello就是Hello hello = new Hello();仍試圖理解Java中的面向對象編程

最後,我的最後一個問題是,如果我要使用默認構造函數實例化類Hello的對象,並將該對象分配給名爲var1的varname,那麼它就是Hello var1 = new Hellow();.我將如何分配的參考命名VAR1給變量命名VAR2

對象,我知道有一個術語,用來描述變量VAR1和VAR2的當前狀態,但我不能把它

+0

'你好var2 = var1;' – Thilo

+0

是隻是一個淺拷貝? –

+1

這不是一個副本。這兩個變量將指向同一個對象。 – Thilo

回答

0

剛定測試的例子來說明事物

public class Hello { 
    Hello var1, var2; 
    public static void main(String[] args){ 
     Hello h1 = new Hello(); 
     h1.var1 = h1; 
     System.out.println("h1.var1 ---- "+ h1.var1); 

     Hello h2 = new Hello(); 
     h1.var2 = h2; 
     System.out.println("h1.var2 ---- "+ h1.var2); 

     h1.var2 = h1.var1; 

     System.out.println("h1.var1 ---- "+ h1.var1); 
     System.out.println("h1.var2 ---- "+ h1.var2); 
    } 
} 


    Output :- 

    h1.var1 ---- [email protected] 
    h1.var2 ---- [email protected] 
    h1.var1 ---- [email protected] 
    h1.var2 ---- [email protected] 

假設有一個名爲Hello類,我怎麼會聲明變量 命名爲VAR1和VAR2是在類對象的引用喂? I 認爲它只是你好var1,var2;

您可以看到有兩個聲明同一類的變量,可以引用Hello類實例。

還只是構建使用默認構造函數的類你好 的對象的實例,這純粹是你好你好=新 你好();

是的,每個類都有一個默認構造函數,所以你可以像這樣初始化類。

最後我的最後一個問題是,如果我是使用默認構造函數來實例化 類你好的對象和對象分配給 評爲varaible VAR1這純粹是你好VAR1 =新Hellow();. 我將如何分配的參考命名對象VAR1到 變量命名VAR2

正如你看到的輸出var2的哈希碼是相同var1h1.var2 = h1.var1聲明。這說明var2以前的參考被替換爲var1參考。所以這裏不復制對象,但複製對象的引用。檢查var1var2hashcode

那就是它!