java - Java 中打印 char 和 int 数组的区别

标签 java arrays

<分区>

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

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/

相关文章:

java - 如何通过 boolean 变量定义的 3 种过滤器类型来过滤 ArrayList?

python - 在 python 中包装一个 numpy 数组

c++ - 删除数组中的元素,C++

c - 合并排序的合并函数删除最大的按字母顺序排列的条目结构

java - 找回密码Tomcat认证

java - 丢失代码签名证书别名

java - 无法直接从 Spark RDD 向 Ignite 写入/保存数据

java - Griffon Ormlite 插件配置未获取环境设置

java - java中如何更改字符数组中的字符

c - C以字符数组和打印形式存储矩阵