打印字符数组的输出是什么意思?

时间:2012-12-07 14:08:36

标签: java string character-arrays

我现在正从C迁移到Java,我正在学习一些关于Strings的教程。在教程中的某一点上,他们展示了从字符数组中实例化一个新字符串然后打印字符串。我跟着,但我想打印字符数组和字符串,所以我尝试了这个:

class Whatever {
    public static void main(String args[]) {
        char[] hello = { 'h', 'e', 'l', 'l', 'o', '.'};
        String hello_str = new String(hello);
        System.out.println(hello + " " + hello_str);
    }
}

我的输出是这样的:

[C@9304b1 hello.

显然,这不是你在Java中打印字符数组的方式。但是我想知道我是不是有垃圾?我在某个网站上看到打印字符数组会给你一个地址,但这对我来说不是一个地址......我在网上找不到很多关于它的信息。

那么,我刚刚打印了什么?
和奖金问题: 你如何在java中正确打印字符数组?

1 个答案:

答案 0 :(得分:8)

  

但是我想知道我是不是有垃圾?

不,你得到了Object.toString()的结果,在数组中没有被覆盖:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@'”以及哈希代码的无符号十六进制表示形式组成。宾语。换句话说,此方法返回一个等于值的字符串:

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

所以它不是垃圾,因为它有意义......但它也不是特别有用的值。< / p>

你的红利问题......

  

如何在java中正确打印字符数组?

调用Arrays.toString(char[])将其转换为字符串...或只是

System.out.println(hello);

将改为调用println(char[]),将其转换为字符串。请注意,Arrays.toString将构建一个字符串,显然是一个字符数组,而System.out.println(hello)大致相当于System.out.println(new String(hello))