不管是剛出來工作的還是出來工作一段時(shí)間的碼農(nóng),都會(huì)與到各種各樣的崩潰,這其中最常見的就是NullPointerException了,這里我進(jìn)行講解下NullPointerException的怎么出生的。
當(dāng)應(yīng)用程序試圖在需要對象的地方使用 null 時(shí),拋出該異常。這種情況包括:
1、調(diào)用 null 對象的實(shí)例方法:
比如有個(gè)對象User對象:
class User{
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
在使用過程中只是定義了對象User,沒有進(jìn)行實(shí)例化就去獲取對象里的name或sex,就會(huì)報(bào)NullPointerException;
User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//user = new User();//這里實(shí)例化
user.getName();
}
2、如果一個(gè)數(shù)組為null,試圖用屬性length獲得其長度時(shí)或直接取里面的數(shù)組里面的值
private String[] data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(data.length>0){ //這里就會(huì)空指針報(bào)錯(cuò)
}
data[0] = "李四"; //這里就會(huì)空指針報(bào)錯(cuò)
}
3、在需要拋出一個(gè)異常對象,而該對象為 null 時(shí)
static MyException e;
public static void main(String args[]){
throw e; //這里就會(huì)空指針報(bào)錯(cuò)}
結(jié)束語:
本人是Android開發(fā)人員,在Android開發(fā)中還是會(huì)有其它情況會(huì)報(bào)NullPointerException,這一系列的NullPointerException就是因?yàn)樵谑褂眠^程中沒有去初始化獲取該對象已為空;在開發(fā)過程中需要謹(jǐn)慎,本人的想法是多做一個(gè)為空判斷也好比程序崩潰的好