显示不同数组类型的值

Show values of different array types

我对 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.

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

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

因为println方法重载了,可以接受char[],看它的source - println(char x[]):

757 public void println(char x[]) {
758     synchronized (this) {
759         print(x);
760         newLine();
761     }
762 }

print 调用 write(char buf[]) 迭代序列并打印它。

另请参阅文档并查看 PrintStream#println(char[] x):

Prints an array of characters and then terminate the line. This method behaves as though it invokes print(char[]) and then println().

查看println方法的方法签名:

println(char [] x) 存在: 该方法根据系统的字符编码将每个字符转换成字节值并全部打印出来.

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

而是调用通用 println(Object x) 方法