首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中print方法的混乱

Java中print方法的混乱
EN

Stack Overflow用户
提问于 2010-02-17 00:57:11
回答 4查看 209关注 0票数 4

每当我尝试将char数组打印到控制台时,我都会得到整数格式的结果,但是每当我尝试将整数数组打印到控制台时,我都会得到哈希码格式的结果。有人能告诉我为什么吗?

代码语言:javascript
复制
char[] arr={'4','5','6'};
System.out.println(arr); //456

int[] arr={4,5,6};
System.out.println(arr) //[I@3e25a5]
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-17 00:59:42

java.io.PrintStream (System.out的类)有一个特殊的print-method for char[],但不适用于int[]。因此,对于char[],使用了这个特殊的方法,而int[]是通过通用版本打印的,它打印哈希码(或者,更准确地说,是使用对象作为参数调用String.valueOf()的结果)。

票数 11
EN

Stack Overflow用户

发布于 2010-02-17 01:02:31

原因很简单,因为没有专门处理int[]的方法。它将由隐式调用Object#toString()String#valueOf()打印。如果给定对象类型中的Object#toString()未被覆盖,则将打印以下内容(根据前面提到的重新链接的API)。

代码语言:javascript
复制
getClass().getName() + '@' + Integer.toHexString(hashCode())

int[]类的名称为[I

要实现您想要的功能,您需要Arrays#toString()

代码语言:javascript
复制
int[] arr = {4, 5, 6};
System.out.println(Arrays.toString(arr)); // [4, 5, 6]
票数 3
EN

Stack Overflow用户

发布于 2010-02-17 01:00:29

在第一种情况下,字符数组就像字符串一样使用(实际上也只是一个字符数组)。

在第二个中,它没有整数数组类型的重载,只是打印出对象引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2274654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档