1

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

4 回答 4

10

使用实用方法java.util.Arrays.toString(int[])

System.out.println(Arrays.toString(reverse(number)));

数组类不会覆盖Object.toString(),这意味着它们使用Object 提供的默认实现,即“ type@hashcode_in_hex”。类型的 String 表示int[][I,这就是为什么您会看到这种“不连贯的胡言乱语”。

于 2012-04-11T20:17:00.647 回答
2

尝试这个:

System.out.println(Arrays.toString(reverse(number)));

这是java的“错误”之一 - 你必须使用Arrays.toString()否则你会得到默认toString()的 from Object,它会产生你所看到的输出,

于 2012-04-11T20:17:19.307 回答
1

您正在打印数组的哈希值。你应该做类似的事情

for(int i: reverse(number)){
  System.out.println(i);
}
于 2012-04-11T20:17:51.267 回答
1

Commons.lang

ArrayUtils.reverse(int[] array)

完毕。

于 2012-04-11T20:18:53.313 回答