1. 程式人生 > >遇到的 java.lang.NullPointerException 報錯收藏

遇到的 java.lang.NullPointerException 報錯收藏

NullPointerException簡介

  1. 所謂的指標,就是java中的物件的引用。比如String s;這個s就是指標。 
  2. 所謂的空指標,就是指標的內容為空,比如上面的s,如果令它指向null,就是空指標。
  3. 所謂的空指標異常,就是一個指標是空指標,你還要去操作它,既然它指向的是空物件,它就不能使用這個物件的方法。比如上面的s假如為null,你還要用s的方法,比如s.equals( String x);那麼就會產生空指標異常。

目錄

 

1,String型別

2,介面型別

3,當一個物件的屬性的值為空

再補充下說明:


1,String型別

 String型別的物件可以做如下判斷

if ( rb != null && !"".equals(rb)){
    ......
}

當然還可以多做一個判斷,是否不為空字串

if( rb != null && !"".equals(rb.trim())) {
    ......
}

程式碼段2: 

一個小技巧:如果要把某個方法的返回值與常量做比較,把常量放在前面,可以避免呼叫null物件的equals方法。譬如:  

if ("root".equals(userName)) {
    ....
} 

即使userName物件返回了null物件,這裡也不會有空指標異常,可以照常運轉。  

 


2,介面型別

介面型別的物件沒有用具體的類初始化,比如:
List lt; 會報錯
List lt = new ArrayList(); 則不會報錯了

  • 在空物件引用,呼叫介面方法:java.util.List.size()


 


3,當一個物件的屬性的值為空

 


再補充下說明:

java語言裡面都是通過一個個類協同工作來實現各種功能的。

例如你定義好了一個類,直接通過類名定義一個物件

Class class;

此時,這個class被聲明瞭型別, 預設 class = null; 這樣在呼叫class.xxxx()的時候系統只能給你個空指標異常。

想不要空指標那麼就給class做個賦值操作就好了,例如 class = new Class();

實際如下:程式碼段4: 

public static void main(String args[]){ 
    Person p=null; 
    p.setName("張三"); 
    System.out.println(p.getName()); 
} 

分析:宣告一個Person物件,並打印出該物件的中的Name名字。 
說明:這個時候你的p就出現空指標異常,因為你只是聲明瞭這個Person型別的物件並沒有建立物件,所以它的堆裡面沒有地址引用,切忌你要用物件掉用方法的時候一定要建立物件

 


參考來源於:

https://blog.csdn.net/zwhfyy/article/details/885588/ 

https://blog.csdn.net/qing101hua/article/details/45459161