Java 为什么我需要在使用变量类时初始化它
我有课本Java 为什么我需要在使用变量类时初始化它,java,eclipse,oop,Java,Eclipse,Oop,我有课本 private Author author; String title; int noOfPages; etc as get/set... 类书扩展了类作者 public String nameOfAuthor; 我的问题是: 为什么我需要初始化 Author author = new Author(); // in private varible of class Book. 我想知道为什么我在eclipse中编码 Author author ; // in private v
private
Author author;
String title;
int noOfPages;
etc as get/set...
类书扩展了类作者
public String nameOfAuthor;
我的问题是:
为什么我需要初始化
Author author = new Author(); // in private varible of class Book.
我想知道为什么我在eclipse中编码
Author author ; // in private varible of class Book.
Eclipse不会返回任何错误,但在控制台中,它如下所示:
Exception in thread "main" java.lang.NullPointerException
at Book.setAuthorName(HelloWorld.java:25)
at HelloWorld.main(HelloWorld.java:41)
设置/获取已完成。初始化时作者的名字在哪里
Author author;
??引用类型的字段声明(静态或非静态)缺少初始值设定项,默认情况下会使用null
初始化该字段
就好像你做了:
Author author = null;
默认情况下,不带初始值设定项的局部变量不会初始化,如果在没有值的情况下使用,则会产生编译时错误。您需要创建一个对象,否则,变量作者将指向nothing或null
// Declare the variable
Author author;
// Create an object (with the new operator) and assign the object to the variable
author = new Author();
这是否回答了您的问题?当您以这种方式创建对象时
Author a;
只是
Author a = null;`
Null是一个“未定义的值”。例如,你怎么能得到一个空名字?什么都不会告诉你“嗨,我的名字什么都不是”为什么
书
要扩展作者
?我从来没有看过一本写过书的书。我想你误解了对象初始化的一个重要部分以及Java中构造函数的使用。谢谢大家!我是OOP的新手,非常感谢!我初始化了作者;我完成了setAuthorName()。现在author不是等于null吗?正确的?或者我误解了什么?请阅读关于构造函数的文章。通常,您可以创建构造函数,并在那里传递您的值。这就是为什么你需要初始化你的类。谢谢!我初始化了作者;我完成了setAuthorName()。现在author不是等于null吗?正确的?或者我误解了什么?@OneMoreTime如果你使用Author-Author=new-Author
那么author
一旦被使用,就不会是null
。谢谢!我初始化了作者;我完成了setAuthorName()。现在author不是等于null吗?正确的?还是我误解了什么?谢谢!我初始化了作者;我完成了setAuthorName()。现在author不是等于null吗?正确的?还是我误解了什么?