2011-12-12 28 views
-2

目前我有如何打印數組中的字符串?

public Module[]moduleArray = new Module[4];  

陣列,並輸出它我使用

public void displayModules() 
{ 
    for (int i = 0; i < moduleArray.length; i++) 
    { 
     System.out.println(moduleArray[i]); 
    }   
} 

但是它的輸出

模塊@ 1f5e4ae5
模塊@ 67871079
null
null

回答

5

Module類中執行/取代toString()。當看到[email protected]字符串表示時,這是因爲Module類的toString()的唯一實現是Object類的實現。由於Object不知道Module的任何信息,它只輸出類名和實例ID。

+1

需要注意的是,由於@ user979236在問題中提到它,因此對'null'數組元素調用'toString()'將導致'NullPointerException'。您可能需要準備好處理這種情況。 –

+1

@ThomasOwens,不正確,因爲約翰沒有說「call toString」。 Java在數組中的對象上調用'toString'。如果數組中的對象爲null,則用戶將看到「null」。 NPE不會被拋出。 – Paul

1

Module需要有意義的toString()方法。你所看到的是默認的Object.toString()方法的輸出。例如,如果Module有String類型的屬性nametype你可以有一個toString方法,如:

@Override 
public String toString() 
{ 
    return "Module named: " + name + " of type: " + type; 
} 

這樣,你會看到上面的字符串返回而不是默認的toString方法的輸出。

1

覆蓋toString()方法在數組的內容類中,在您的示例Module類中,將幫助您在迭代數組時從數組中打印每個值。

有快速的方法來打印數組內容而無需迭代數組元素,使用Arrays.asList()實用程序方法將數組轉換爲列表。

System.out.println("Convert Array to List " + Arrays.asList(moduleArray));