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[是整数数组的“类类型”。打印出这个数组本身将打印类类型@,然后是一个短的十六进制字符串,因为那是数组的哈希码。这和你可能见过的一样Object@0b1ac20。这是默认toString()实现的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 回答