2016-04-30 66 views
0

我想創建一個字母表的字符數組。我看了看這個帖子:toCharArray()在Java中產生垃圾的字符串文字

Better way to generate array of all letters in the alphabet

其中這樣說:

char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();

所以在我的代碼有:

public class Alphabet { 

private char[] letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); 

public String availableLetters(){ 

    return letters.toString(); 
    } 

} 

當我調用函數availableLetters()從main()和printit到控制檯,它輸出這個垃圾:

[[email protected]

我在做什麼錯了?

+0

生產垃圾的垃圾(Java)。這就是所謂的生產性垃圾。 –

+0

對不起。我只是一個新手 – Deersfeet

+0

沒有必要道歉,這是一個有效的問題。 – sbhatla

回答

-1

可以傳遞的char數組添加到String構造函數或靜態方法String.valueOf()並返回。

5

該數組是正確的,問題是您沒有正確打印它。

如果一次打印您陣列一個字符,你會得到正確的結果:

for (char c : letters) { 
    System.out.print("'" + c + "' "); 
} 

demo

不幸的是,Java標準類庫不會爲陣列提供的toString()有意義覆蓋,對於那些剛接觸這門語言的程序員來說,會造成很大的麻煩。

3

如果你想打印在陣列形式,然後使用:

System.out.println(Arrays.toString(letters)); 

BTW:該[[email protected]是不是真的垃圾。當班級不覆蓋toString()方法時,就會打印出來。

Object.toString()

返回該對象的字符串表示。通常,toString方法返回一個字符串,用於「文本地表示」此對象。結果應該是簡明但內容豐富的表示 ,這對人們來說很容易閱讀。建議所有 子類重寫此方法。類Object 的toString方法返回一個字符串,其中包含對象的哈希代碼的實例,符號字符「@」和無符號的 十六進制表示形式的對象的類名稱。在其它 即,該方法返回一個字符串等於的值:

的getClass()的getName()+ '@' + Integer.toHexString(hashCode()方法)