Java 为什么它在运行时抛出NullPointerException?
当我尝试运行这段代码时,第5行出现NullPointerException。发生了什么事Java 为什么它在运行时抛出NullPointerException?,java,Java,当我尝试运行这段代码时,第5行出现NullPointerException。发生了什么事 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 Inte
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));
}
}
问题是i是一个整数对象,并且初始化为null
您可以通过替换以下内容来解决此问题:
x = i + y;
使用以下选项之一:
Integer i;
Integer是对象,而不是基元类型。默认情况下,对象初始化为null。 NullPointerException表示您试图向尚未初始化的对象发送消息 试着改变
int i;
int i = 0;
Integer i = 0;
到
使用整数时,默认情况下它初始化为null。这是因为Integer是一个对象,而不是像int这样的基元类型。当您尝试对一个未初始化的空对象执行某些操作时,会得到一个NullPointerException。要解决此问题,可以使用int:
使用int时,如果未指定任何值,它将自动初始化为0。因此,您的最终代码应该如下所示:
int i;
Integer是一个非基元类型的对象。默认情况下,它接受null并已初始化。使整数I=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));
}
}
注意:整数i已声明但未初始化:它是空指针 在发帖之前,请将问题中的代码格式化。现在看起来很糟糕。可能是@user3690771的副本欢迎访问SO!:如果这对您有帮助,请将其标记为已接受,以帮助站点的未来访问者。这是一个有问题的修复。这将隐藏异常,而不会真正修复问题,即您没有初始化变量。两个整数i=0;int i=0;如果给定Boxer类名,我会假设OP在使用boxed原语。
int i;
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));
}
}
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){
}
}
}