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()を使用します。タイプの文字列表現はです。これが、この「一貫性のないジブリッシュ」が表示される理由です。type@hashcode_in_hexint[][I

于 2012-04-11T20:17:00.647 に答える
2

これを試して:

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

これは、Javaの「間違い」の1つです。使用しArrays.toString()ないと、デフォルトtoString()をから取得します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 に答える