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

Java arrays printing out weird numbers and text

本问题已经有最佳答案,请猛点这里访问。

我是编程新手。我相信这个问题的答案是肯定的,但我不知道要搜索什么。

好的,我马上去。

这是我的代码:

1
2
3
4
5
6
7
8
9
10
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);

这编译起来工作得很好。只是命令的输出让我头晕。

这是输出:[I@3e25a5

我希望输出代表列表中完全相同的数字(arr)。我怎样才能做到?


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

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

或者,您可以像其他线程中发布的那样,使用for循环来循环数组。


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

电流输出为classtype@hashcode

如果需要打印具有多个维度的数组,请使用:

1
Arrays.deepToString(arr);

还记得为用户定义的类重写toString()方法,这样您就可以根据自己的选择获得objet的表示,而不是默认的classtype@hashcode表示。


要打印值,请使用。

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


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

你只需要循环一下:

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

顺便说一下,你可以写

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

甚至

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

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


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

1
2
3
4
5
6
7
8
9
for(int i=0; i<arr.length; i++) {
   System.out.println(arr[i]);
}

or

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


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


这样地:

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

那个"奇怪的数字"是你打印出来的数组的参考。它是java.lang.object toString()方法中内置的默认行为。

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


我的短版!

使用array.toString()和printstream.printf(字符串格式,对象…ARGS)。

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


您打印了引用,而不是引用处的值…总有一天,一切都会变得清晰。