对象数组的问题

来源:互联网 发布:万方数据库论文检索 编辑:程序博客网 时间:2024/05/08 12:43
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.lengthi++) {
            //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());
        }
    }
}


来自为知笔记(Wiz)