Java中打印方法的混乱

时间:2010-02-16 16:57:11

标签: java arrays

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

char[] arr={'4','5','6'};
System.out.println(arr); //456

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

4 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:3)

仅仅因为没有专门处理句柄int[]的方法。它将由String#valueOf()打印,而不是隐式调用Object#toString()。如果在给定的对象类型中未覆盖Object#toString(),则将打印以下内容(根据上述链接的API)。

getClass().getName() + '@' + Integer.toHexString(hashCode())

int[]类的名称为[I

要实现您的目标,您需要Arrays#toString()代替:

int[] arr = {4, 5, 6};
System.out.println(Arrays.toString(arr)); // [4, 5, 6]

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我认为第一个被视为CharSequence ...就像一个字符串。