安卓開發過程中空指針的問題Java.lang.NullPointerException


   最近做一個新聞客戶端的應用,經常出現空指針的問題,我想一方面可能是自己水平有限,二是開發過程中有一些遺漏的地方。一般情況下新手出現空指針的概率較高。下面來總結一下經常出現的問題。

1.所謂的指針,就是java中的對象的引用。比如String s;這個s就是指針。

  2.所謂的空指針,就是指針的內容為空,比如上面的s,如果令它指向null,就是空指針。

 3.所謂的空指針異常,就是一個指針是空指針,你還要去操作它,既然它指向的是空對象,它就不能使用這個對象的方法。比如上面的s假如為null,你還要用s的方法,比如s.equals( String x);那么就會產生空指針異常。


原因:

1字符串變量未初始化;  2接口類型的對象沒有用具體的類初始化,比如: List lt;會報錯  List lt = new ArrayList();則不會報錯了 3當一個對象的值為空時,你沒有判斷為空的情況。你可以試着把下面的代碼前加一行代碼: if(rb!=null && rb!="") 改成:  if(rb==null);  if(rb!==null&&rb!="") 或者if((“”).equals(rb))


解決辦法:


代碼段1:    out.println(request.getParameter("username"));    

分析:代碼段1的功能十分簡單,就是輸出用戶輸入"username"的值。       

 說明:看上去,上面的語句找不出什么語法錯誤,而且在大多數情況下也遇不到什么問題。但是,如果某個用戶在輸入數據時並沒有提供表單 域"username" 的值,或通過某種途徑繞過表單直接輸入時,此request.getParameter("username")的值為空(注意不是空字符串,是空對象 null。),out對象的println方法是無法直接對空對象操作的,因此代碼段1所在的JSP頁面將會拋出 "Java.lang.NullPointerException"異常。而且即使對象可能為空時,也調用Java.lang.Object或 Object對象本身的一些方法如toString(), equal(Object obj)等操作。  

 代碼段2:    String userName = request.getParameter("username");   If (userName.equals("root"))   {....}    

分析:代碼段2的功能是檢測用戶提供的用戶名,如果是用戶名稱為"root"的用戶時, 就執行一些特別的操 作。                                                                               

 說明:在代碼段2中,如果有用戶沒有提供表單域"username"的值時,字符串對象userName為null值,不能夠將一個null的對象與另一 個對象直接比較,同樣,代碼段2所在的JSP頁面就會拋空指針錯誤。   一個小技巧:如果要把某個方法的返回值與常量做比較,把常量放在前面,可以避免調用null對象的equals方法。譬如:    If ("root".equals(userName))   {....}       即使userName對象返回了null對象,這里也不會有空指針異常,可以照常運轉。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM