只是好奇,但是当我尝试使用它来反转一个数组时,它总是吐出一些不连贯的乱码而不是反转的数组,例如[I@43256ea2
。关于它为什么会这样做的任何想法?
public class Fiddle {
public static void main(String[] args) {
int[] number = {1,2,3,4,5};
System.out.println(reverse(number));
}
public static int[] reverse(int[] a) {
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[a.length-1-i] = a[i];
}
return b;
}
}
感谢您为何发生这种情况的想法(可能是因为我忘记了一些事情)。
答案 0 :(得分:10)
使用实用程序方法java.util.Arrays.toString(int[])
:
System.out.println(Arrays.toString(reverse(number)));
数组类不会覆盖Object.toString()
,这意味着他们使用的是the default implementation provided by Object,这是&#34; type@hashcode_in_hex
&#34;。 int[]
类型的字符串表示形式为[I
,这就是为什么您会看到这种&#34;语无伦次的乱码。&#34;
答案 1 :(得分:2)
试试这个:
System.out.println(Arrays.toString(reverse(number)));
这是java的“错误”之一 - 您必须使用Arrays.toString()
,否则您将从toString()
获得默认Object
,这会产生您所看到的输出,
答案 2 :(得分:1)
您正在打印数组的哈希值。你应该做点什么
for(int i: reverse(number)){
System.out.println(i);
}
答案 3 :(得分:1)
Commons.lang
ArrayUtils.reverse(int[] array)
完成。