Java 显示不同数组类型的值

Java 显示不同数组类型的值,java,arrays,outputstream,Java,Arrays,Outputstream,我有一个关于Java中数组输出的问题。 所以,当我有这个代码时: char[] chars = new char[] {'a', 'b', 'c'}; System.out.println(chars); int[] ints = new int[] {3, 4, 5}; System.out.println(ints); 然后输出为:abc 我知道数组在Java中是一个对象。所以我想这里会调用toString()方法吗 但如果我有这个代码: char[] chars = new char[

我有一个关于Java中数组输出的问题。 所以,当我有这个代码时:

char[] chars = new char[] {'a', 'b', 'c'};
System.out.println(chars);
int[] ints = new int[] {3, 4, 5};
System.out.println(ints);
然后输出为:
abc

我知道数组在Java中是一个对象。所以我想这里会调用
toString()
方法吗

但如果我有这个代码:

char[] chars = new char[] {'a', 'b', 'c'};
System.out.println(chars);
int[] ints = new int[] {3, 4, 5};
System.out.println(ints);
然后输出为:
[I@1540e19d

为什么第一个代码有效而第二个代码无效? 我知道我可以在class
Arrays
中调用静态方法
toString()
,但这不是我想要的答案


您能帮助我,为什么Java开发人员使用不同的技术来显示数组的值?

因为
println
方法重载,并且可以接受
char[]
,请参见其:

print
调用
write(char-buf[])
对序列进行迭代并打印

另请参阅文档并参阅:

打印一个字符数组,然后终止该行。此方法的行为就像调用
print(char[])
然后调用
println()


查看
println
方法的方法签名:

存在: 该方法根据系统的字符编码将每个字符转换为一个字节值,并将其全部打印出来

但不存在任何接受整数数组的方法


相反,通用方法被称为

,因为print/println被重载以获取一个char数组作为参数并打印其内容。请参阅文档:@AlexisC。请回答这个问题,因为您完全正确。并且@Fabian:
那么输出是对该数组对象的引用。
不,它不是引用,它是十六进制版本对象的哈希代码。但很多人忽略了这个细节:)。啊,好吧,但这并不是绝对错误,当我说,它是对这个对象的引用?因为我的书提供给我:(@FabianKönig,它是错误的。它可能看起来像一个内存地址(特别是带有@),但不是一个。谢谢,对不起,这是我的错误。我忽略了这一点:汉克斯,对不起,这是我的错误。我忽略了这一点:S