欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 出現(xiàn)NullPointerException的原因及解決辦法

 更新時間:2017年08月29日 15:48:13   投稿:lqh  
這篇文章主要介紹了java 出現(xiàn)NullPointerException的原因及解決辦法的相關(guān)資料,這里說明出現(xiàn)NullPointerException 的原因的總結(jié),并說明該如何解決,需要的朋友可以參考下

java 出現(xiàn)NullPointerException的原因及解決辦法

日常開發(fā)過程中,最常見的異常莫過于NullPointerException,之前的時候,只是知道去找到報錯的位置,然后去解決它,最近有空學習C語言,就去深究了下NullPointerException異常的本質(zhì)。

發(fā)生NullPointerException的情況:

  • 調(diào)用 null 對象的實例方法。
  • 訪問或修改 null 對象的字段。
  • 如果一個數(shù)組為null,試圖用屬性length獲得其長度時。
  • 如果一個數(shù)組為null,試圖訪問或修改其中某個元素時。
  • 在需要拋出一個異常對象,而該對象為 null 時。

首先,我們先找到Java.lang.NullPointerException這個類,內(nèi)容很簡單:

package java.lang;

/**
 * Thrown when a program tries to access a field or method of an object or an
 * element of an array when there is no instance or array to use, that is if the
 * object or array points to {@code null}. It also occurs in some other, less
 * obvious circumstances, like a {@code throw e} statement where the {@link
 * Throwable} reference is {@code null}.
 */
public class NullPointerException extends RuntimeException {

  private static final long serialVersionUID = 5162710183389028792L;

  /**
   * Constructs a new {@code NullPointerException} that includes the current
   * stack trace.
   */
  public NullPointerException() {
  }

  /**
   * Constructs a new {@code NullPointerException} with the current stack
   * trace and the specified detail message.
   *
   * @param detailMessage
   *      the detail message for this exception.
   */
  public NullPointerException(String detailMessage) {
    super(detailMessage);
  }

}

NullPointerException翻譯過來便是空指針,接下來我們首先要了解的是什么是指針,對于非C/C++的程序員來說,很多其它語言開發(fā)者對指針的概念很模糊,說白了,指針就是存儲變量的內(nèi)存地址,在c語言里面,NULL表示該指針不指向任何內(nèi)存單元,0表示指向地址為0的單元(這個單元一般是不能使用的)。先看一段C語言代碼:

void main() {
  int* i = NULL;
  printf("%#x\n", i);
  printf("%#x\n", &i);
  system("pause");
}

在C語言里,你可以讀取NULL本身的值(void *)0,即0,但是讀取它指向的值,那是非法的,會引發(fā)段錯誤。而Java里面的NULL就是直接指向了0,上述也說了,指向地址為0的單元,一般是不能使用的。

一句話總結(jié):因為指向了不可使用的內(nèi)存單元,虛擬機無法讀取它的值,最終導致NullPointerException。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Qt5.9繼承QObject創(chuàng)建多線程實例

    Qt5.9繼承QObject創(chuàng)建多線程實例

    本文主要介紹了Qt5.9繼承QObject創(chuàng)建多線程實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C語言中無符號數(shù)和有符號數(shù)之間的運算

    C語言中無符號數(shù)和有符號數(shù)之間的運算

    C語言中有符號數(shù)和無符號數(shù)進行運算默認會將有符號數(shù)看成無符號數(shù)進行運算,其中算術(shù)運算默認返回無符號數(shù),邏輯運算當然是返回0或1了。下面通過一個例子給大家分享C語言中無符號數(shù)和有符號數(shù)之間的運算,一起看看吧
    2017-09-09
  • 使用opencv實現(xiàn)車道線檢測實戰(zhàn)代碼

    使用opencv實現(xiàn)車道線檢測實戰(zhàn)代碼

    這篇文章主要介紹了opencv車道線檢測實戰(zhàn),效果非常逼真,代碼簡單易懂,對opencv車道線檢測實戰(zhàn)代碼感興趣的朋友一起看看吧
    2022-03-03
  • c異或運算 c異或運算符號

    c異或運算 c異或運算符號

    位運算的運算分量只能是整型或字符型數(shù)據(jù),位運算把運算對象看作是由二進位組成的位串信息,按位完成指定的運算,得到位串信息的結(jié)果
    2014-06-06
  • Matlab 數(shù)字圖像的濾波及邊緣檢測

    Matlab 數(shù)字圖像的濾波及邊緣檢測

    本文運用文字、代碼以及示例詳細介紹了數(shù)字圖像的濾波以及圖像的邊緣檢測,需要的朋友可以自己了解一下
    2021-08-08
  • C++實現(xiàn)商店倉庫管理系統(tǒng)

    C++實現(xiàn)商店倉庫管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)商店倉庫管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • VS2022添加代碼模板的實現(xiàn)步驟(圖文)

    VS2022添加代碼模板的實現(xiàn)步驟(圖文)

    使用代碼模板即可實現(xiàn)像內(nèi)置函數(shù)那樣,只需寫幾個字母,便能提示自動補全,本文主要介紹了VS2022添加代碼模板的實現(xiàn)步驟,感興趣的可以了解一下
    2024-06-06
  • C++實現(xiàn)含附件的郵件發(fā)送功能

    C++實現(xiàn)含附件的郵件發(fā)送功能

    這篇文章主要為大家詳細介紹了C++實現(xiàn)含附件的郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C++ vector及實現(xiàn)自定義vector以及allocator和iterator方式

    C++ vector及實現(xiàn)自定義vector以及allocator和iterator方式

    這篇文章主要介紹了C++ vector及實現(xiàn)自定義vector以及allocator和iterator方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C/C++題解LeetCode1295統(tǒng)計位數(shù)為偶數(shù)的數(shù)字

    C/C++題解LeetCode1295統(tǒng)計位數(shù)為偶數(shù)的數(shù)字

    這篇文章主要為大家介紹了C/C++題解LeetCode1295統(tǒng)計位數(shù)為偶數(shù)的數(shù)字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論