代码1
public static void main(String[] args) {
//动态初始化
int[] a1 = new int[3];
System.out.println(a1);//输出是[I@52e922
}
代码2
public class ArrayPrintTest {
public static void main(String[] args) {
//动态初始化
// int[] a1 = new int[3];
// System.out.println(a1);//[I@52e922
//静态初始化
int[] a2 = new int[] {1,4,2};
System.out.println(a2);//输出的仍是[I@52e922
}
代码3
public class ArrayPrintTest {
public static void main(String[] args) {
//动态初始化
int[] a1 = new int[3];
System.out.println(a1);
//静态初始化
int[] a2 = new int[] {1,4,2};
System.out.println(a2);
//最后输出[I@52e922
}
代码4
public static void main(String[] args) {
//动态初始化
int[] a1 = new int[3];
System.out.println(a1);//[I@52e922
//静态初始化
int[] a2 = new int[] {1,4,2};
System.out.println(a2);//[I@25154f
//遍历数组
for(int i=0;i<a2.length;i++) {
System.out.println(a2[i]);//
}
}
//最后输出
[I@52e922
[I@25154f
1
4
2
问题来了:
1.代码一输出的是数组a1的地址值[I@52e922,这很正常,但为什么执行代码二的时候输出a2的地址值也是[I@52e922?
2.执行代码三时输出的不应该是两段地址值吗,为什么只输出[I@52e922?
3.执行代码四后,把a2数组值遍历后能输出两段不同的地址值?
那个不是地址,是obj.toString()的默认实现的结果,大概这样:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}