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

dan*_*ton 4 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  
Run Code Online (Sandbox Code Playgroud)

当我在循环中x使用打印时System.out.println(x),我得到了值,1, 2, 3但是当我返回答案并打印出来时,我得到了[I@9826ac5.知道为什么吗?

小智 7

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

System.out.println( Arrays.toString(answer) );
Run Code Online (Sandbox Code Playgroud)


Dav*_*ave 6

I[是一个整数数组的"类类型".打印出这个数组本身将打印类类型@然后是一个短的十六进制字符串,因为这是数组的哈希码.它和你可能看到过的东西一样Object@0b1ac20.这是作为默认值toString()实现的Object.

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


Jig*_*shi 1

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