91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中出現NullPointerException的原因是什么

發布時間:2021-07-19 14:46:30 來源:億速云 閱讀:227 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“java中出現NullPointerException的原因是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“java中出現NullPointerException的原因是什么”這篇文章吧。

java 出現NullPointerException的原因及解決辦法

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

發生NullPointerException的情況:

  • 調用 null 對象的實例方法。

  • 訪問或修改 null 對象的字段。

  • 如果一個數組為null,試圖用屬性length獲得其長度時。

  • 如果一個數組為null,試圖訪問或修改其中某個元素時。

  • 在需要拋出一個異常對象,而該對象為 null 時。

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

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++的程序員來說,很多其它語言開發者對指針的概念很模糊,說白了,指針就是存儲變量的內存地址,在c語言里面,NULL表示該指針不指向任何內存單元,0表示指向地址為0的單元(這個單元一般是不能使用的)。先看一段C語言代碼:

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

java中出現NullPointerException的原因是什么

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

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

以上是“java中出現NullPointerException的原因是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广西| 南木林县| 桃源县| 孟连| 沈丘县| 金湖县| 灌南县| 建水县| 黔江区| 调兵山市| 特克斯县| 珠海市| 犍为县| 新巴尔虎右旗| 绥棱县| 河南省| 边坝县| 鸡东县| 大新县| 台中市| 迭部县| 曲沃县| 原平市| 锡林郭勒盟| 金山区| 富锦市| 晋州市| 延川县| 丹棱县| 昌乐县| 定陶县| 香港| 安康市| 五指山市| 金溪县| 鞍山市| 禄丰县| 祁门县| 嘉义市| 隆化县| 定西市|