2014-11-03 46 views
-1
class Tank{ 
    int level; 
} 
class aliasing{ 
    public static void main(String args[]){ 
     Tank t1 = new Tank(); 
     Tank t2 = new Tank(); 

     t1.level=21; 
     t2.level=32; 
     System.out.println("t1: " + t1 + " t2: " + t2); 
    } 
} 

這段代碼產生輸出:t1:Tank @ 1b4b24d t2:Tank @ 260829。顯然這是錯誤的,但我不知道爲什麼突然間我所有的代碼都產生了nosense。另外,如果我只是發出一個原始值,我可以打印出正確的值沒有問題,所以我不知道爲什麼只有對象搞亂了。Java error @ d622e5

+0

你期望輸出什麼,爲什麼? – 2014-11-03 19:22:24

回答

1

您需要重寫Tank類中的toString()方法以生成對象的有意義的表示形式。

0

它正在打印正確的輸出。從Object.toString()文檔可以看出,默認是打印類的名稱,@字符和特定對象的散列。

散列值不同,因爲它們是兩個不同的對象。如果你要設置t1 = t2 = new Tank();那麼你會看到哈希匹配。