为什么初始化的数组对象还原为null?

时间:2017-12-06 09:35:01

标签: java arrays null

我想弄清楚为什么我在for loop之外声明的数组拒绝被for loop正确初始化,以便被另一个for loop使用。谷歌搜索"数组空指针异常"和" null数组"一直让我误以为没有初始化数组。希望这不是在这里发生的事情。 (我不认为是。)

public static void main(String[] args)
    {
        Student[] students = new Student[25];      
        for(Student student : students)
        {
            int grade=(int)(Math.random()*4 +1);
            student = new Student("bob",grade);
            System.out.println(student); //debug 1
        }
        for(Student student : students)
        {
            // if (student.getGPA() == 0){
            //     System.out.println("No data entered for student.");
            // }
            System.out.println(student); //debug 2
        }
    }

这个块只是主要的,它在另一个以文件命名的有效类中。 Student是我排除的一个类,因为它与被询问的问题无关,但是作为参考,它需要一个String名称和一个int gradeLevel作为参数,并且有toString()和getGPA()方法(等等)。

我想从调试2获得并从调试1获得:

的内容
bob: Freshman; GPA: 0.00
bob: Senior; GPA: 0.00
bob: Freshman; GPA: 0.00
bob: Sophomore; GPA: 0.00
bob: Senior; GPA: 0.00

调试2中的内容:

null
null
null
null
null

我希望print语句标记为" debug 2"打印与#34; debug 1"相同的东西。是,这是学生的toString值的列。相反,我只是为调试2获取了一列null,但是调试1的输出正确。

注释掉的代码是空指针异常的来源,因为null对象没有getGPA()方法。我不知道为什么数组仍然充满了空值。调试1中没有空的这一事实告诉我数组确实正在被初始化,但是这些值并没有停留在数组中。

我可能完全误解了某些东西或在这里使用了某些东西。

0 个答案:

没有答案