Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我需要在使用变量类时初始化它_Java_Eclipse_Oop - Fatal编程技术网

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吗?正确的?还是我误解了什么?