显示不同数组类型的值

时间:2015-03-08 11:40:08

标签: java arrays outputstream

我对Java中的数组输出有疑问。 所以,当我有这个代码时:

char[] chars = new char[] {'a', 'b', 'c'};
System.out.println(chars);

然后输出为:abc

我知道Array是Java中的Object。所以我认为这里会调用toString()方法吗?

但如果我有这段代码:

int[] ints = new int[] {3, 4, 5};
System.out.println(ints);

然后输出为:[I@1540e19d

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

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

2 个答案:

答案 0 :(得分:4)

查看println方法的方法签名:

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

但是不存在采用整数数组的任何方法。

相反,通用println(Object x)方法称为

答案 1 :(得分:3)

由于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)

  

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