为什么会出现java.lang.NullPointerException?

时间:2013-11-10 11:44:44

标签: java constructor nullpointerexception

首先,我不是Java的专家。所以我的问题可能很愚蠢。如果我弄错了,请原谅。这是来自OCJP MCQ。我写了以下代码

public class Test{
Integer a;
int b;

public Test(Integer x) {
    b = a+x;
    System.out.println(""+b);
}

public static void main(String... str)
{
    new Test(new Integer("10"));
}}
  

输出:线程“main”中的异常java.lang.NullPointerException

我心中有以下问题,

1。在Integer a语句执行之前,int bb=a+x;是否已初始化为

2。为什么抛出NullPointerException。

非常感谢您的回复!!

3 个答案:

答案 0 :(得分:3)

所有对象引用都在Java中初始化为null。这意味着属性Integer a将为null,因为它尚未初始化。因此,这意味着在执行b = a+x;时,您实际上是将变量x添加到a的引用变量null

初始化属性Integer a

Integer a = new Integer(0);

答案 1 :(得分:1)

您点击下面的reason specified in Docs

Calling the instance method of a null object.

默认情况下,引用将初始化为null,其中orimirives设置为默认原始值。

Data Type   Default Value (for fields)
byte    0
short   0
int 0
long    0L
float   0.0f
double  0.0d
char    '\u0000'
**String (or any object)    null** //Integer is Object, int is not
boolean false

当您尝试进行拆箱时,即

 wrapperIntegerObject.intValue();   //wrapperIntegerObject is null

答案 2 :(得分:1)

null +您将获得NullPointerException的任何数字。

说明试试下面的代码。

  static Integer a;
  public static void main(String[] ar) {
       System.out.println(a);
       System.out.println(a+10);
  }