Java中打印char和int数组之间的区别

时间:2014-07-18 19:14:42

标签: java arrays

当我运行以下代码时,我得到了数组的地址:

int arr[] = {2,5,3};
System.out.println(arr); // [I@3fe993

但是当我声明一个字符数组并以相同的方式打印它时,它给了我数组的实际内容。为什么呢?

char ch[] = {'a','b','c'};
System.out.println(ch); // abc

2 个答案:

答案 0 :(得分:17)

PrintStream(这是System.out)有一个专用的方法重载println(char[]),它打印一个char数组的字符。

对于其他数组没有特殊的重载,所以当你传递int[]时,被调用的方法是println(Object)。该方法通过调用其toString()方法将传递的对象转换为字符串。

所有数组的toString()方法只是默认的一个继承的from class Object,它显示了它们的类名和默认的哈希码,这就是为什么它不那么有用。您可以使用Arrays.toString(int[])来获取int数组内容的字符串表示。

P.S。与文档所说的相反,对象的默认哈希码通常不是对象的地址,而是a randomly generated number

答案 1 :(得分:0)

当你说 的System.out.println(CH);

它导致调用print(char [] s)然后println()

println的JavaDoc说:

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

整数变量不是char,因此print(int [] s)获取数组的地址。