反转整数数组

时间:2012-04-11 20:15:24

标签: java

只是好奇,但是当我尝试使用它来反转一个数组时,它总是吐出一些不连贯的乱码而不是反转的数组,例如[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;
    }
}

感谢您为何发生这种情况的想法(可能是因为我忘记了一些事情)。

4 个答案:

答案 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)

完成。