Java数组打印出奇怪的数字和文本

时间:2010-12-18 19:22:43

标签: java arrays text numbers

我是编程新手。我确定这个问题的答案就在那里,但我不知道该搜索什么。

好的,我会正确的。

这是我的代码:

int[] arr;
arr = new int[5];

arr[0] = 20;
arr[1] = 50;
arr[2] = 40;
arr[3] = 60;
arr[4] = 100;

System.out.println(arr);

这编译并正常工作。这只是CMD的输出,我很头晕。

这是输出:[I@3e25a5

我希望输出代表列表中的完全相同的数字(arr)。我该如何做到这一点?

10 个答案:

答案 0 :(得分:22)

每个对象都有一个toString()方法,默认方法是显示对象的类名表示,然后是@,后跟哈希码。所以你看到的是toString()数组的默认int表示。要打印数组中的数据,您可以使用:

System.out.println(java.util.Arrays.toString(arr));

或者,您可以使用for循环遍历数组,正如其他人在此主题中发布的那样。

答案 1 :(得分:5)

这是数组的默认字符串表示形式(奇怪的文本)。

你只需循环它:

for(int i : arr){
System.out.println(i);
}

答案 2 :(得分:5)

要打印值,请使用。

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

答案 3 :(得分:5)

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

当前输出为classtype@hashcode

如果您需要使用多个维度打印数组:

Arrays.deepToString(arr);

还要记住用户定义类的to override toString()方法,以便在选择时获得对象的表示,而不是classtype@hashcode的默认表示

答案 4 :(得分:4)

它打印它的.toString()方法,你应该打印每个元素

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

or

for(Integer i : arr) {
  System.out.println(i);
}

答案 5 :(得分:4)

BTW你可以写

int[] arr = { 20, 40, 60, 40, 60, 100 };
System.out.println(Arrays.toString(array));

甚至

System.out.println(Arrays.toString(new int[] { 20, 40, 60, 40, 60, 100 }));

System.out.println(Arrays.asList(20, 40, 60, 40, 60, 100));

答案 6 :(得分:3)

像这样:

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

“奇怪的数字”是您打印出来的数组的参考。这是java.lang.Object toString()方法中内置的默认行为。

如果看到引用不够,您应该在自己的对象中覆盖它。

答案 7 :(得分:3)

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

答案 8 :(得分:2)

我的短版本!

使用Arrays.toString()PrintStream.printf(String format, Object... args)

System.out.printf("%s%n", Arrays.toString(arr));

答案 9 :(得分:-3)

你打印了引用而不是引用的值......有一天,C语都会变得清晰。