最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java中NullPointerException異常的原因和解決辦法

 更新時(shí)間:2023年07月25日 09:19:23   作者:Java Fans  
本文主要介紹了詳解Java中NullPointerException異常的原因和解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、NullPointerException異常原因

一般空指針的原因就是:當(dāng)前正在使用的變量沒有對(duì)應(yīng)的值

也就是說:當(dāng)前正在使用的變量沒有引用指向?qū)?yīng)的值/對(duì)象

也可以這樣說:Null Pointer就相當(dāng)于Null Reference

如下面的代碼都會(huì)報(bào)空指針異常:

public class Main {
    public static void main(String[] args) {
        String str1 = null;
        System.out.println(str1.toLowerCase());  //NullPointerException
    }
}
public class Main {
    String str2;    //默認(rèn)值為null
    public static void main(String[] args) {
        Main ma = new Main();
        System.out.println(ma.str2.toLowerCase());   //NullPointerException
    }
}

因?yàn)槌蓡T變量str2和局部變量str1都是默認(rèn)為null,所以都沒有具體的指向某個(gè)值/對(duì)象

定位NullPointerException

如果產(chǎn)生了NullPointerException,例如,調(diào)用a.b.c.x()時(shí)產(chǎn)生了NullPointerException,原因可能是:

  • a是null;
  • a.b是null;
  • a.b.c是null;

確定到底是哪個(gè)對(duì)象是null以前只能打印這樣的日志:

  • System.out.println(a);
  • System.out.println(a.b);
  • System.out.println(a.b.c);

如下面的代碼:

public class test20210629 {
    public static void main(String[] args) {
        Person p = new Person();    
        System.out.println(p.address.city);   //輸出:null
        System.out.println(p.name[0]);      //輸出:null
        System.out.println(p.address.city.toLowerCase());   //空指針異常
        System.out.println(p.name[0].toLowerCase());   //空指針異常
    }
}
class Person {
    String[] name = new String[2];
    Address address = new Address();
}
class Address {
    String city;
    String street;
    String zipcode;
}

總結(jié):

空指針發(fā)生的原因:一個(gè)變量A沒有值(或沒有指向?qū)?yīng)的對(duì)象),然后直接使用A的方法,或者將A當(dāng)成參數(shù)傳給其他對(duì)象/方法使用,就會(huì)報(bào)空指針異常!

2、NullPointerException異常解決辦法

第一步,先看一下異常是怎么產(chǎn)生的,在輸入一個(gè)這樣的地址:http://localhost:8083/***/***/***/***?productId=564564564573534,在控制臺(tái)就會(huì)如圖所報(bào)錯(cuò)

第二步,要解決這樣的空指針錯(cuò)誤,就先要找到出錯(cuò)誤的JAVA代碼,點(diǎn)擊就可以,如圖:

第三步,定位到j(luò)ava代碼后,在debug啟動(dòng)項(xiàng)目,并添加斷點(diǎn),怎么啟動(dòng)debug:http://jingyan.baidu.com/article/19020a0a65e142529c284241.html

第四步,繼續(xù)第一步的地址,在debug的模式下可以看到此字段的值是Null, 如圖:

第五步,輸入正確的productId,如正確的鏈接是:http://localhost:8083/***/***/***/***?productId=47681438955545,如圖,debug模式下此字段就不是null,如圖:

第六步,如果沒有其他錯(cuò)誤的話,此時(shí)頁面也應(yīng)該打開了

到此這篇關(guān)于詳解Java中NullPointerException異常的原因和解決辦法的文章就介紹到這了,更多相關(guān)Java NullPointerException異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java ThreadLocal 線程本地存儲(chǔ)工具思路詳解

    Java ThreadLocal 線程本地存儲(chǔ)工具思路詳解

    文章詳細(xì)介紹了Java的ThreadLocal類,包括其核心作用、定位、特性、工作原理、用法、內(nèi)存泄漏風(fēng)險(xiǎn)、父子線程共享問題、線程安全邊界以及與synchronized和并發(fā)容器的區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java8新特性Lambda表達(dá)式的一些復(fù)雜用法總結(jié)

    Java8新特性Lambda表達(dá)式的一些復(fù)雜用法總結(jié)

    lambda表達(dá)式是JAVA8中提供的一種新的特性,它支持Java也能進(jìn)行簡單的“函數(shù)式編程”。 下面這篇文章主要給大家介紹了關(guān)于Java8新特性Lambda表達(dá)式的一些復(fù)雜用法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • 詳解mybatis中的if-else的嵌套使用

    詳解mybatis中的if-else的嵌套使用

    本文主要介紹了mybatis中的if-else的嵌套使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java開發(fā)者推薦的10種常用工具

    Java開發(fā)者推薦的10種常用工具

    這篇文章主要為大家詳細(xì)介紹了Java開發(fā)者推薦的10種常用工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java SpringMVC 異常處理SimpleMappingExceptionResolver類詳解

    Java SpringMVC 異常處理SimpleMappingExceptionResolver類詳解

    這篇文章主要介紹了SpringMVC 異常處理SimpleMappingExceptionResolver類詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java I/O深入學(xué)習(xí)之File和RandomAccessFile

    Java I/O深入學(xué)習(xí)之File和RandomAccessFile

    這篇文章主要介紹了Java I/O深入學(xué)習(xí)之File和RandomAccessFile, I/O系統(tǒng)即輸入/輸出系統(tǒng),對(duì)于一門程序語言來說,創(chuàng)建一個(gè)好的輸入/輸出系統(tǒng)并非易事。在充分理解Java I/O系統(tǒng)以便正確地運(yùn)用之前,我們需要學(xué)習(xí)相當(dāng)數(shù)量的類。,需要的朋友可以參考下
    2019-06-06
  • SpringBoot AOP使用筆記

    SpringBoot AOP使用筆記

    今天小編就為大家分享一篇關(guān)于SpringBoot AOP使用筆記,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • mybatis執(zhí)行錯(cuò)誤但sql執(zhí)行正常問題

    mybatis執(zhí)行錯(cuò)誤但sql執(zhí)行正常問題

    這篇文章主要介紹了mybatis執(zhí)行錯(cuò)誤但sql執(zhí)行正常問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換

    java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換

    本文主要介紹了java中URLencode、URLdecode及Base64加解密轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • 用C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)的方法詳解

    用C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)的方法詳解

    這篇文章主要介紹了用C++實(shí)現(xiàn)求N!中末尾0的個(gè)數(shù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

都匀市| 紫云| 瓦房店市| 旬邑县| 彩票| 门头沟区| 望奎县| 浑源县| 彰化市| 二手房| 车致| 青铜峡市| 搜索| 将乐县| 定州市| 克什克腾旗| 茌平县| 大冶市| 家居| 南丰县| 屏东市| 奉新县| 若羌县| 博湖县| 长汀县| 岱山县| 上思县| 东平县| 永年县| 岳西县| 益阳市| 正镶白旗| 游戏| 阿鲁科尔沁旗| 阿克苏市| 紫阳县| 平山县| 宝清县| 溧水县| 五原县| 阿拉善右旗|