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
相关产品推荐
相关产品推荐

