【问题标题】:Why i need initialize a varible class when i want use it为什么我想使用变量类时需要初始化它
【发布时间】:2015-10-12 08:46:50
【问题描述】:

我有课本

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;

??????

【问题讨论】:

  • 为什么Book 会扩展Author?我从没见过写过书的书。
  • 我想你误解了对象初始化和Java中构造函数的使用的一个重要部分。
  • 谢谢大家!我是OOP的新手,非常感谢!
  • 我初始化了Author 作者;我完成了 setAuthorName()。作者现在不等于null吗?正确的?还是我误解了什么?
  • 了解构造函数。通常你可以创建构造函数,然后传递你的值。这就是为什么你需要初始化你的类。

标签: java eclipse oop


【解决方案1】:

缺少初始化器的引用类型的字段(静态或非静态)声明默认使用null进行初始化。

如果你这样做了:

Author author = null;

没有初始化器的局部变量默认不初始化,如果没有值使用会产生编译时错误。

【讨论】:

  • 谢谢!我初始化了Author 作者;我完成了 setAuthorName()。作者现在不等于null吗?正确的?还是我误解了什么?
  • @OneMoreTime 如果你使用Author author = new Author;,那么author 一旦被使用就不会是null
【解决方案2】:

您需要创建一个对象,否则变量 Author 指向空或 null。

// Declare the variable
Author author;
// Create an object (with the new operator) and assign the object to the variable
author = new Author();

这能回答你的问题吗?

【讨论】:

  • 谢谢!我初始化了Author 作者;我完成了 setAuthorName()。作者现在不等于null吗?正确的?还是我误解了什么?
【解决方案3】:

当你以这种方式创建对象时

Author a;

只是

Author a = null;`

Null 是一个“未定义的值”。例如,你怎么能得到无名的名字?没有什么不会告诉你“嗨,我的名字是 NOTHING”。

【讨论】:

  • 谢谢!我初始化了Author 作者;我完成了 setAuthorName()。作者现在不等于null吗?正确的?还是我误解了什么?
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多