一个关于打印数组的问题
如下程序
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值