【java基础】引用类型数组初始化中,setter和getter函数空指针问题

【java基础】引用类型数组初始化中,setter和getter函数空指针问题

在java引用类型数组初始化中,setter和getter函数空指针问题会很常见,究竟是怎么样引起的,做一个小小的分析。

首先来一个简单的代码:

  • class Student {
    private String name;
    public String getName()
    {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }

    public class ExtraClass{
    public static void main(String[] args) {

    Student[] student = new Student[2];
    //此时如下调用会出现空指针异常
    student[0].setName("李明");
    //正确调用
    Student s1= new Student();
    student[0] = s1;
    student[0].setName("李明");
    

    }
    }


分析
- 数组类型是引用类型,此时 Student[] student = new Student【2】是引用类型执行动态初始化(不是静态初始化)后保存的(指针)是null值,即没有指向具体的数据存储的内存地址,就像数组里面没任何数据,你访问一个空数组当然会报出空指针异常。
- Student s1= new Student()执行对象初始化,对象初始化就会将对象的元素初始化为null,也就是说内存中已经有了对象的这些成员,只不过为null,那么你在为他赋值就正常了

此时将一个对象的指针放在数组里,你再去访问数组就没有问题了
因为java没有指针概念,把指针理解为内存首地址就可以了。

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值