为什么打印Java数组显示内存位置
int[] answer= new int[map.size()]; HashMap map = new HashMap(); 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
。 知道为什么吗?
I[
是一个整数数组的“类类型”。 打印出这个数组本身将打印类类型@
然后是一个短的hex字符串,因为这是数组的哈希码。 它与你可能看到的像Object@0b1ac20
。 这是作为Object
的默认toString()
实现的 。
也许你想返回数组的特定元素或使用for循环打印整个数组?
长话短说,你不能轻易在java中打印数组。 做这个:
System.out.println( Arrays.toString(answer) );
因为这就是数组的toString()
方法的实现方式