7
int[] answer= new int[map.size()];  
HashMap<String, Integer> map = new HashMap<String, Integer>();  

for (int j=0; j<answer.length;j++){  
    int x=map.get(keys.get(j));  
    answer[j]=x;  
}  

return answer  

ループでx使用して印刷すると、 の値が得られますが、答えを返して印刷すると、 が得られます。理由はありますか?System.out.println(x)1, 2, 3[I@9826ac5

4

3 に答える 3

7

I[整数の配列の一種の「クラス型」です。この配列自体を出力すると、クラス タイプが出力され、@次に短い 16 進文字列が出力されます。これが配列のハッシュ コードだからです。おそらく見たことのあるものと同じですObject@0b1ac20toString()これは、 のデフォルトとしてObject実装されています。

配列の特定の要素を返したり、for ループを使用して配列全体を出力したりしたいかもしれません。

于 2013-02-10T05:16:56.820 に答える
7

簡単に言えば、Java で配列を簡単に印刷することはできません。これを行う:

System.out.println( Arrays.toString(answer) );
于 2013-02-10T05:18:16.580 に答える
1

それが配列のtoString()メソッドの実装方法だからです

于 2013-02-10T05:15:56.373 に答える