Java打印数组内存地址而不是数组内容

时间:2014-12-05 16:27:03

标签: java arrays printing

我创建了一个函数,它在我的数组中找到最多3个组。当我打印这个时,内存地址[I @ 43c46747被打印而不是应该包含在数组中的最大值。

我不允许使用任何导入语句/任何高级解决方案 - 尝试使用辅助函数?

谢谢:)

2 个答案:

答案 0 :(得分:2)

实际上,你看到的不是内存地址,而是数组的类名和哈希值(以十六进制形式)。这是从toString()

java.lang.Object方法继承的行为

您可以使用for循环单独打印每个数组元素。

例如

for (int i = 0; i < myArray.length; i ++) {
    System.out.println(myArray[i]);
}

请注意,println打印非基本类型的数组元素的toString方法的结果。如果您想要自定义行为而不是&#34; classname @ hashvalue&#34;

,请确保他们的toString被正确覆盖

答案 1 :(得分:0)

当您尝试正常打印数组时,您只需在Array对象上调用toString()方法。在Java中,这是默认实现,它打印出您在[I@43c46747上面看到的结果。

你应该使用

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

为数组打印有意义的值。