为什么已经Student[] s1 = new Student[20];下面遍历数组的时候还要s1[i] = new Student();,不然还不能能输出这里的两个new各是什么意思

public class ExerTest2 {
    public static void main(String[] args) {
        Student[] s1 = new Student[20];
        for(int i = 0;i < s1.length;i++) {
            s1[i] = new Student();
            s1[i].state = (int)(Math.random()*(6-1+1)+1);
            s1[i].score = (int)(Math.random()*(100-0+1));
        }
          for(int i = 0;i < s1.length;i++) {
              if(s1[i].state == 3) {
                  System.out.println("学号:" + i + " 年级:"  +
              s1[i].state + " 成绩:" + s1[i].score);
              }
          }
    } 
}
class Student{
    int number;
    int state;
    int score;
}

第一个是new数组对象,第二个是new每个数组元素啊
JAVA里对象全得靠new来产生,数组用new来产生20个对象空间,每个元素还得用new来产生对象

第一个只是开辟了可以存放20个Student对象的空间,还没实例化具体的对象
第二个是在这20个空间的其中一个空间中实例化一个Student对象

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632