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

我是编程新手。 我相信这个问题的答案在那里,但我不知道要search什么。

所以呢。 好的,我会去的。

这是我的代码:

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)。 我如何做到这一点?

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

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

或者你也可以像在其他人在这个线程中发布的那样通过for循环遍历数组。

这是数组的默认string表示forms(奇怪的文本)。

你只需要循环它:

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

要打印值使用。

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

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

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

顺便说一句你可以写

 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)); 
 System.out.println(Arrays.toString(arr)); 

当前的输出是classtype@hashcode

因此,您需要打印具有多个维度的数组:

 Arrays.deepToString(arr); 

还要记住为用户定义的类重写toString()方法,以便在select时获得objet的表示,而不是classtype@hashcode的默认表示

喜欢这个:

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

这个“奇怪的数字”是你打印的数组的参考。 这是java.lang.Object toString()方法中构build的默认行为。

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

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

我的版本更短!

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

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

你打印的是参考文献,而不是参考文献中的数值…有一天,它将全部变得清晰。