2013-01-05 38 views
1

以下是我的Java代碼片斷:的toString在Java代碼中

static String sortChars(String s) { 
    char[] chars = s.toCharArray(); 
    Arrays.sort(chars); 
    return chars.toString(); 
} 

我調用上述功能使用:

String result = sortChars(s); 

但結果不符合我的期望:例如, s =「are」,結果=「aer」。但是,當我使用:

return new String(chars) 

它的工作原理。 有人可以告訴我它的原因。由於

+3

你的期望是什麼? –

回答

8

由於char[]類沒有覆蓋默認ObjecttoString()實現,它不返回由字符數組中的字符組成的字符串,但的char []的類名+哈希碼。例如:arr[[email protected]

+0

值得一提的是,因爲一個數組是一個Object,並且不會覆蓋'toString()',所以你得到了'Object.toString()'這是創建輸出的東西。 –

+1

@BrianRoach - 謝謝,編輯我的答案更清晰。 – MByD

+0

FWIW *所有*數組類型沒有toString,這就是爲什麼'java.util.Arrays'類中存在實用方法的原因。 – mihi

0

toString()返回對象的字符串表示形式。你可以把它看作對象的描述。 new String(chars)將給你一個Stringchar陣列的內容。

使用toString()如果你想表示對象的用戶或日誌,使用new String()如果你想獲得一個String對象,它是與您的陣列的內容

0

需要注意的是,中Java String的構造函數是接受字符數組的函數。這將字符數組轉換爲一個字符串,就像你期望的那樣,這是你正在做的事情的正確選擇。