打印arrays显示错误输出

这段代码出了什么问题我得错了输出。 我不知道什么是错的,我希望你能帮助我:

public class Main{ public static void main(String[] args){ int[] data={11,22,33,55,22,88,99,77}; SortingAlgo algo=new SortingAlgo(); data=algo.selectionSort(data); System.out.println("numbers are"+ data); } } 

其他课程

 public class SortingAlgo{ public int[] selectionSort(int[] data){ int lenD = data.length; int j = 0; int tmp = 0; for(int i=0;i<lenD;i++){ j = i; for(int k = i;kdata[k]){ j = k; } } tmp = data[i]; data[i] = data[j]; data[j] = tmp; } return data; } } 

这是我的出局:

 numbers are[I@2e4b1dd8 

输出完全没问题。 数组不会覆盖toString()方法,因此它会调用Object#toString()方法,该方法会生成这种表示forms。 输出的forms如下:

 getClass().getName() + '@' + Integer.toHexString(hashCode()) 

对于数组, Class#getName()方法对不同的元素类型使用一些编码来生成唯一的类名。 编码规则在文档中指定。

要获得人类可读的表示,可以使用Arrays#toString()方法:

 System.out.println("numbers are"+ Arrays.toString(data)); 

data是一个int 数组 。 你应该使用Arrays#toString() ,这是以这种方式实现的:

 3860 public static String toString(int[] a) { { 3861 if (a == null) 3862 return "null"; 3863 int iMax = a.length - 1; 3864 if (iMax == -1) 3865 return "[]"; 3866 3867 StringBuilder b = new StringBuilder(); 3868 b.append('['); 3869 for (int i = 0; ; i++) { 3870 b.append(a[i]); 3871 if (i == iMax) 3872 return b.append(']').toString(); 3873 b.append(", "); 3874 } 3875 } 

确保您理解它,它将帮助您理解数组。

您可以循环数组并手动打印它:

 for(int i: data) { System.out.println(i + " "); } 

这样您就可以控制要打印的值,例如偶数值:

 for(int i: data) { if(i % 2 == 0) { System.out.println(i + " "); } } 

关于你得到的输出,这是对它的解释:

在Java中,每个对象都有toString()方法,默​​认是显示类名表示,然后添加@然后是哈希码。

数组的toString()被破坏了。 你需要

 import java.util.Arrays; System.out.println("numbers are" + Arrays.toString(data)); 

这同样适用于Arrays.equals(),Arrays.hashCode()。 Array,Arrays,ArrayUtils类添加了您可能希望数组具有的function。

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Array.html

http://docs.oracle.com/javase/7/docs/api/java/sql/Array.html

http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/ArrayUtils.html

但是,您可能会发现您确实需要ArrayList。