package com.zzh_01;
public class StudentTest {
public static void main(String[] args) {
//首先定义可以储存5个学生对象的数组
Student[] students = new Student[5];
//这是本人第一次编写的时候出现这样的问题:为什么编译会报错?java.lang.NullPointerException
//第7行通过new创建了包含五个Student数组,要想赋初值,可以通过set方法进行赋初值,为什么下面的方法不行,会出现空指针异常呢?
//我假设不通过建立Studnet数组,就建立一个对象students,来进行测试。
//进过自己多方面的咨询和资料的查询,分析如下:
//Student[] students = new Student[5];这条语句只是给内存分配了五个可以存放Student的空间,但是具体的每个空间存储
//的是哪个对象还是不知道的。所以这样sutdent[0]、student[1]...就会报空指针异常了。至于为什么int数组就可以呢?因为
//int 是基本数据类型,所以对象相当一已经定义好了是int型。
//又有一个问题了,既然用int定义的是基本数据类型,那String不是吧,下面来测试一下String类型的数组会不会出现这方面的错误。
//先定义一个字符串数组
//其实可以知道,s[i]="";其实就是向每个单元存储内容
//好了,知道了这个我们继续进行下面的操作。
//进过上面的分析,我们创建5个学生类对象
Student s1 = new Student("陆川",20);
Student s2 = new Student("梅超风",45);
Student s3 = new Student("天下霸唱",63);
Student s4 = new Student("西红柿土豆",18);
Student s5 = new Student("我的天",27);
//然后将创建的学生类对象存储到数组里面
students[0]=s1;
students[1]=s2;
students[2]=s3;
students[3]=s4;
students[4]=s5;
//测试结果
//遍历
for (int i = 0; i < students.length; i++) {
//System.out.println(students[i].toString());//这里没有重写toString方法,所以输出地址:com.zzh_01.Student@139a55
//重写toString之后的结果
System.out.println(students[i]);
//根据视频教程里面,还有第二种方法,就是先建立对象,然后输出,如下
Student s = students[i];
System.out.println(s.getName()+"-----"+s.getAge());
}
}
}