我想创建一个字母表的char数组。我看了这篇文章:
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();
}
}
当我从main()和printit调用函数availableLetters()到控制台时,它会输出这个垃圾:
[C@15db9742
我做错了什么?
答案 0 :(得分:5)
阵列是正确的,问题是您没有正确打印它。
如果您一次打印一个字符,您将获得正确的结果:
for (char c : letters) {
System.out.print("'" + c + "' ");
}
不幸的是,Java标准类库没有为数组提供有意义的toString()
覆盖,给那些不熟悉该语言的程序员带来了很多麻烦。
答案 1 :(得分:3)
如果要以数组形式打印,请使用:
System.out.println(Arrays.toString(letters));
BTW :[C@15db9742
并不是垃圾。当类没有覆盖toString()
方法时,就会打印出来。
返回对象的字符串表示形式。一般来说, toString方法返回一个“文本表示”的字符串 宾语。结果应该是简洁但信息丰富的表示 一个人很容易阅读。建议所有人 子类重写此方法。类Object的toString方法 返回一个字符串,该字符串由其类的名称组成 object是一个实例,at符号字符“@”和unsigned 对象哈希码的十六进制表示。其他 单词,此方法返回一个等于值的字符串:
getClass()。getName()+'@'+ Integer.toHexString(hashCode())
答案 2 :(得分:-1)
您可以将char数组传递给String构造函数或静态方法String.valueOf()
,然后返回它。