对象数组的问题

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 0; students.length; i++) {
            //System.out.println(students[i].toString());//这里没有重写toString方法,所以输出地址:com.zzh_01.Student@139a55
        //重写toString之后的结果
            System.out.println(students[i]);
            
            //根据视频教程里面,还有第二种方法,就是先建立对象,然后输出,如下
            Student students[i];
            System.out.println(s.getName()+"-----"+s.getAge());
        }
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值