使用toCharArray()生成Java中的垃圾的字符串文字

时间:2016-04-30 04:17:47

标签: java string char literals garbage

我想创建一个字母表的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

我做错了什么?

3 个答案:

答案 0 :(得分:5)

阵列是正确的,问题是您没有正确打印它。

如果您一次打印一个字符,您将获得正确的结果:

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

demo

不幸的是,Java标准类库没有为数组提供有意义的toString()覆盖,给那些不熟悉该语言的程序员带来了很多麻烦。

答案 1 :(得分:3)

如果要以数组形式打印,请使用:

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

BTW [C@15db9742并不是垃圾。当类没有覆盖toString()方法时,就会打印出来。

来自Object.toString()

  

返回对象的字符串表示形式。一般来说,   toString方法返回一个“文本表示”的字符串   宾语。结果应该是简洁但信息丰富的表示   一个人很容易阅读。建议所有人   子类重写此方法。类Object的toString方法   返回一个字符串,该字符串由其类的名称组成   object是一个实例,at符号字符“@”和unsigned   对象哈希码的十六进制表示。其他   单词,此方法返回一个等于值的字符串:

     

getClass()。getName()+'@'+ Integer.toHexString(hashCode())

答案 2 :(得分:-1)

您可以将char数组传递给String构造函数或静态方法String.valueOf(),然后返回它。