[英]why it throw A NullPointerException occurs at runtime?
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
發生了什么事?
x = i + y;
問題是i
是一個Integer
對象,並初始化為null。
您可以通過以下方法解決此問題:
Integer i;
具有以下之一:
int i;
int i = 0;
Integer i = 0;
整數是一個對象,而不是原始類型。 默認情況下,對象被初始化為null。 NullPointerException表示您試圖將“發送消息”發送到尚未初始化的對象。
嘗試改變
Integer
至
int
使用Integer
,默認情況下它將初始化為null 。 這是因為Integer
是一個對象,而不是像int
這樣的原始類型。 當您嘗試使用null
對象(尚未初始化)執行某操作時,會得到NullPointerException
。 要解決此問題,您可以使用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));
}
}
整數是不是原始類型的對象。默認情況下,它為null並已初始化。 使整數I = 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已聲明但未初始化:它是空指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.