大学生学JAVA 2021-03-14 09:35 采纳率: 0%
浏览 33

关于Java数组两种初始化输出数组的问题

代码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数组值遍历后能输出两段不同的地址值?
  • 写回答

1条回答 默认 最新

  • 幻灰龙 2021-03-14 10:59
    关注

    那个不是地址,是obj.toString()的默认实现的结果,大概这样:

     public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
     }
    评论

报告相同问题?

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使