public class Boxer1 {
Integer i;
int x;
public Boxer1(int y) {
x = i + y;
System.out.println(x);
}
public static void main(String[] args) {
new Boxer1(new Integer(4));
}
}
当我尝试运行此代码时,第5行会发生NullPointerException
。发生了什么?
答案 0 :(得分:3)
x = i + y;
问题是i
是Integer
对象并初始化为null。
您可以通过替换以下内容来解决此问题:
Integer i;
使用以下其中一项:
int i;
int i = 0;
Integer i = 0;
答案 1 :(得分:2)
Integer是一个对象,而不是一个原始类型。默认情况下,对象初始化为null。 NullPointerException意味着您尝试发送消息"到尚未初始化的对象。
尝试更改
Integer
到
int
答案 2 :(得分:1)
使用Integer
时,默认情况下会初始化为 null 。这是因为Integer
是一个对象,而不是像int
这样的基本类型。当您尝试使用NullPointerException
的对象(尚未初始化)时,您会得到null
。要解决此问题,您可以使用int
:
int i;
当您使用int
时,如果没有分配任何值,它会自动初始化为0。所以,你的结束代码应该是这样的:
public class Boxer1 {
int i; //<<< this line was changed from Integer i; to int i;
int x;
public Boxer1(int y) {
x = i + y;
System.out.println(x);
}
public static void main(String[] args) {
new Boxer1(new Integer(4));
}
}
答案 3 :(得分:1)
Integer是一个非基本类型的对象。默认情况下,它取值为null并且已初始化。使整数I = 0
答案 4 :(得分:0)
public class Boxer1 {
Integer i;
int x;
public Boxer1(int y) {
x=i+y;
System.out.println(x);
}
public static void main(String[] args) {
new Boxer1(new Integer(4));
throw new NullPointerException();
try{
doBoxer1();
} catch (NullPointerException ex){
System.out.println("NPE encountered in body");
} catch (Throwable ex){
}
}
}
注意:整数i被声明但未初始化:它是一个空指针。