【发布时间】:2015-05-09 15:54:15
【问题描述】:
我对 Java 中数组的输出有疑问。 所以,当我有这个代码时:
char[] chars = new char[] {'a', 'b', 'c'};
System.out.println(chars);
那么输出是:abc。
我知道数组是 Java 中的对象。所以我觉得toString()方法会在这里调用?
但如果我有这个代码:
int[] ints = new int[] {3, 4, 5};
System.out.println(ints);
那么输出是:[I@1540e19d。
为什么第一个代码有效,而第二个代码无效?
我知道我可以在Arrays 类中调用静态方法toString(),但这不是我要寻找的答案。
你能帮我吗,为什么 Java 开发人员使用不同的技术来显示数组的值?
【问题讨论】:
-
因为 print/println 被重载以将 char 数组作为参数并打印其内容。请参阅文档:docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html
-
@AlexisC。请将此作为答案,因为您是绝对正确的。 @Fabian:
Then the output is a reference to this Array Object.不,它不是参考,它是对象哈希码的十六进制版本。但是很多人错过了这个细节:)。 -
嗯,好吧,但也不是绝对错误,当我说,它是对这个对象的引用?因为我的书提供给我:(
-
@FabianKönig 不,这是错误的。它可能看起来像一个内存地址(尤其是 @),但它不是一个。
标签: java arrays outputstream