超级帅的陈星宇 2021-12-24 09:16 采纳率: 86.7%
浏览 22
已结题

Year y [] = new Year[3] 不是创建了数组并分配了实体对象

img

img

Year y [] = new Year[3] 不是创建了数组并分配了实体对象?
再去操作对象应该没错吧?

  • 写回答

3条回答 默认 最新

  • 俺不理解 2021-12-24 09:26
    关注
    Year year = new Year(); // 操作会申请一个Year的空间
    Year[] years = new Year[3]; // 会申请一个Year指针数组,长度为3,注意只是申请了指针空间,并不是Year空间。
    

    这里举个例子。

    1. 假如如一个Year a = new Year();a要占用100字节的空间,a指针需要占用4字节的空间,那么这次 new Year() 操作会申请100字节空间。

    2. 而 Year[] years = new Year[]; 操作只会申请三个Year指针的空间 和 Year[] 数组头指针控件,共计 4 * 3 + Year[] 数组头指针大小的空间,空间连续,并不包括 Year 100 字节控件


    代码4报错,是会报错空指针异常,因为Year[] 数组的每一个位置指向的都是null,没有分配具体指向内容

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 12月24日