<分区>
当我运行以下代码时,我得到了数组的地址:
int arr[] = {2,5,3};
System.out.println(arr); // [I@3fe993
但是当我声明一个字符数组并以相同的方式打印它时,它会给我数组的实际内容。为什么?
char ch[] = {'a','b','c'};
System.out.println(ch); // abc
<分区>
当我运行以下代码时,我得到了数组的地址:
int arr[] = {2,5,3};
System.out.println(arr); // [I@3fe993
但是当我声明一个字符数组并以相同的方式打印它时,它会给我数组的实际内容。为什么?
char ch[] = {'a','b','c'};
System.out.println(ch); // abc
最佳答案
PrintStream
类(System.out
是什么)有一个专用的方法重载 println(char[])
打印 char 数组的字符。
它没有针对其他数组的特殊重载,因此当您传递 int[]
时,调用的方法是 println(Object)
.该方法通过调用其 toString()
方法将传递的对象转换为字符串。
所有数组的toString()
方法只是继承的默认方法from class Object
,它显示了它们的类名和默认哈希码,这就是为什么它的信息量不那么大的原因。您可以使用 Arrays.toString(int[])
获取 int 数组内容的字符串表示形式。
附言与文档所说的相反,对象的默认哈希码通常不是对象的地址,而是 a randomly generated number .
关于java - Java 中打印 char 和 int 数组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832191/