为什么打印Java数组会显示内存位置

时间:2013-02-10 05:13:42

标签: java arrays

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。知道为什么吗?

3 个答案:

答案 0 :(得分:6)

I[是整数数组的“类类型”。打印出这个数组本身将打印类类型@然后打印一个短十六进制字符串,因为这是数组的哈希码。它与您可能看到的Object@0b1ac20相同。这是默认的toString() for Object

也许您想要返回数组的特定元素或使用for循环打印整个数组?

答案 1 :(得分:4)

长话短说,你无法在java中轻松打印数组。这样做:

System.out.println( Arrays.toString(answer) );

答案 2 :(得分:1)

因为这就是数组的toString()方法的实现方式