Why does printing a Java array show a memory location
1 2 3 4 5 6 7 8 9
| 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 |
当我在循环中使用System.out.println(x)打印x时,我得到1, 2, 3的值,但当我返回并打印答案时,我得到[I@9826ac5的值。你知道为什么吗?
- return java.util.Arrays.toString(answer);
- 这并不是一个重复的b/c,操作人员甚至不知道他在打印一个数组。
I[是整数数组的"类类型"。打印出这个数组本身将打印类类型@,然后打印一个短的十六进制字符串,因为这是数组的哈希代码。这和你可能见过的类似于Object@0b1ac20的东西是一样的。这是作为Object的默认toString()实现的。
也许您想返回数组的特定元素,或者使用for循环打印整个数组?
长话短说,你不能轻易地用Java打印一个数组。这样做:
因为这就是数组的toString()方法的实现方式
- 重复问题:stackoverflow.com/questions/409784/&hellip;