我现在正从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中正确打印字符数组?
答案 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))