2016-04-30 123 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()方法)