一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - java 出現NullPointerException的原因及解決辦法

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

2021-05-31 17:36pangpang123654 Java教程

這篇文章主要介紹了java 出現NullPointerException的原因及解決辦法的相關資料,這里說明出現NullPointerException 的原因的總結,并說明該如何解決,需要的朋友可以參考下

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

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

發(fā)生NullPointerException的情況:

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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ā)者對指針的概念很模糊,說白了,指針就是存儲變量的內存地址,在c語言里面,NULL表示該指針不指向任何內存單元,0表示指向地址為0的單元(這個單元一般是不能使用的)。先看一段C語言代碼:

?
1
2
3
4
5
6
void main() {
  int* i = NULL;
  printf("%#x\n", i);
  printf("%#x\n", &i);
  system("pause");
}

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

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

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

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

原文鏈接:http://blog.csdn.net/pangpang123654/article/details/52370669

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 全黄毛片| 无套白浆 | 日本一本草久p | 国产午夜一区二区在线观看 | oneday高清在线观看 | 免费看日产一区二区三区 | 操大肥b| 国产一区在线看 | 日本高清视频在线的 | 91色视| 国产馆在线观看免费的 | 四虎在线最新地址公告 | 无码人妻少妇色欲AV一区二区 | 国产精品嫩草影院一二三区入口 | ts人妖系列在线专区 | 无限资源在线观看高清 | 久草在线精彩免费视频 | 久久88综合 | 免费日韩 | 欧产日产国产精品专区 | 久久热r在线视频精品 | 午夜在线播放免费人成无 | 亚洲AV久久无码精品九号 | 99视频在线看观免费 | 日本一卡二卡3卡四卡网站精品 | 亚洲激情一区 | 国产精品免费久久久久影院 | 国产成人性毛片aaww | 乌克兰一级片 | 亚洲AV无码国产精品午夜久久 | 成人快手破解版 | 亚洲男人的天堂在线 | 亚洲一区二区三区免费视频 | 国产精品露脸国语对白手机视频 | 韩国成人毛片aaa黄 含羞草国产亚洲精品岁国产精品 | 亚洲一区二区三区久久精品 | 免费一级黄 | 99久久精品免费精品国产 | 校园刺激全黄H全肉细节文 校草让我脱了内裤给全班看 | 大片毛片女女女女女女女 | 母爱成瘾在线观看 |