You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

main()方法中出现NullPointerException问题求助

解决Book对象数组的NullPointerException问题

你的代码抛出NullPointerException的核心原因是:创建Book类型数组时,只是分配了数组的存储空间,但数组里的每个元素默认都是null,并没有真正创建Book对象。直接通过books[0].name访问成员变量时,因为books[0]是null,自然会触发报错。

修正后的代码如下:

首先是Book类(无需修改):

class Book {
    String name;
    String author; 
}

然后是修正后的BookTest类:

class BookTest {

    public static void main(String[] args) {
         
        Book[] books = new Book[2];

        // 先实例化每个Book对象,再赋值成员变量
        books[0] = new Book();
        books[0].name = "The graps";
        books[0].author = "Siffyu";
        
        books[1] = new Book();
        books[1].name = "Nova supreme";
        books[1].author = "Jagga";

        for (int i = 0; i < books.length; i++) {
            System.out.println(books[i].name + ": " + books[i].author);
        }

    }
}

也可以用更简洁的方式,在赋值时直接实例化:

class BookTest {

    public static void main(String[] args) {
         
        Book[] books = new Book[2];

        books[0] = new Book() {{
            name = "The graps";
            author = "Siffyu";
        }};
        
        books[1] = new Book() {{
            name = "Nova supreme";
            author = "Jagga";
        }};

        for (int i = 0; i < books.length; i++) {
            System.out.println(books[i].name + ": " + books[i].author);
        }

    }
}

关键要点:

  • 对象数组初始化时,仅确定数组长度,每个元素默认是null
  • 必须先通过new Book()创建具体的对象实例,赋值给数组元素后,才能访问对象的成员变量

内容的提问来源于stack exchange,提问作者Vijay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:55:14