日期:2014-05-20  浏览次数:20656 次

一个关于打印数组的问题
如下程序

String[] a = {"1","2"};
System.out.println(a);
 int[] b = {1,2};
System.out.println(b);

输出:
[Ljava.lang.String;@54acb158
[I@15af33d6

为什么会输出这些呢??还有int是基本类型,也这样输出
------解决方案--------------------
syso里面调用的是toString方法,调用的类型的toString,结果为类型+hashcode
------解决方案--------------------
[Ljava.lang.String;@54acb158
[I@15af33d6
这些都是根据内存地址转化而来的HashCode值,输出他是因为这些类没有覆盖toString方法
java建议覆盖toString,equals和HashCode方法,
import java.util.Arrays;

public class Demo {
public static void main(String[] args) {
String[] a = {"1","2"};
System.out.println(Arrays.toString(a));
 int[] b = {1,2};
System.out.println(Arrays.toString(b));
}
}




你用Arrays.toString()方法就能解觉,像list集合就覆盖了toString方法,他就不会输出hashCode值