java.lang.NullPointerException是java常見的異常, 中文常常翻譯為 空指針異常.
觸發條件: 當壹個對象為空(null)時, ?試圖調用對象的方法, 或者訪問或者修改對象的屬性時 ,就會拋出空指針異常.?
解決該異常的辦法:?
盡量避免使用為空的對象,
或者先判斷是否為null 然後再使用,
或者使用try catch 捕獲到該異常後處理這個異常.?
參考代碼
錯誤示範
public?class?Demo?{public?static?void?main(String[]?args)?{
String?str?=?null;
if(str.equals("ABC"))?{?//str為空,調用str的equals方法,?就會報錯
System.out.println("字符串的內容是ABC");
}else?{
System.out.println("字符串的內容不是ABC");
}
}
}
解決示範1
public?class?Demo?{public?static?void?main(String[]?args)?{
String?str?=?null;
if("ABC".equals(str))?{?//使用"ABC"這個不為null的對象,調用他的equals方法
System.out.println("字符串的內容是ABC");
}else?{
System.out.println("字符串的內容不是ABC");
}
}
}
示範2: 先判斷是否為空, 不為空, 才調用方法和訪問屬性
public?class?Demo?{static?String?str1;
public?static?void?main(String[]?args)?{
if(str1!=null)?{//先判斷它不為空,才調用?它的length方法
System.out.println(str1.length());
}else?{
System.out.println("str1對象為空");
}
}
}
示範3
import?java.util.Scanner;public?class?Demo?{
static?String?str1;
public?static?void?main(String[]?args)?{
try?{
System.out.println(str1.length());
}catch(NullPointerException?e)?{
System.out.println("str1為空...請賦值..");
Scanner?sc?=?new?Scanner(System.in);
str1?=?sc.nextLine();
System.out.println("str1的長度為:"+str1.length());
}
}
}
//str1為空...請賦值..
//ABC
//str1的長度為:3