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

JAVA中StackOverflowError錯誤的解決

 更新時間:2021年04月21日 09:28:40   作者:奕銘呀  
這篇文章主要介紹了JAVA中StackOverflowError錯誤的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

StackOverflowError   

原因

    根據(jù)名字的意思可以大致知道它是跟函數(shù)棧有關的錯誤,就是函數(shù)棧調(diào)用太深了,可能是代碼中有了循環(huán)調(diào)用方法而無法退出的情況。而像while這樣的死循環(huán),不會報錯,程序會一直執(zhí)行下去,占用內(nèi)存。

原理

    StackOverflowError 是一個java中常出現(xiàn)的錯誤:在jvm運行時的數(shù)據(jù)區(qū)域中有一個java虛擬機棧,當執(zhí)行java方法時會進行壓棧彈棧的操作。在棧中會保存局部變量,操作數(shù)棧,方法出口等等。jvm規(guī)定了棧的最大深度,當執(zhí)行時棧的深度大于了規(guī)定的深度,就會拋出StackOverflowError錯誤。

    所以當你在一個函數(shù)再調(diào)用此函數(shù)時,而忘記設置出口就會出現(xiàn)這個錯誤。

    今天我遇到的問題就是我想覆寫hash函數(shù),想要在此函數(shù)調(diào)用的結果是原來的hash函數(shù)調(diào)用的結果再隨便加一個字符串,結果就忽視了函數(shù)會一直調(diào)用下去,相當于沒有設置遞歸函數(shù)的出口,所以導致了StackOverflowError錯誤。

    這是當時我的代碼

     發(fā)生的錯誤

     當我把函數(shù)名字改一改就能正常運行。還有原來的一些設置圖書和學生類時,這兩個類中都覆寫了toString方法,這兩個類也可以互相調(diào)用,當最后調(diào)用tostring時也會發(fā)生錯誤。

下面是我在網(wǎng)上找的一段代碼

//book和student相互循環(huán)引用
public class StackOverFlowDemo {
 
    static class Student{
        String name;
        Book book;
 
        public Student(String name) {
            this.name = name;
        }
        //循環(huán)調(diào)用toString方法
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", book=" + book +
                    '}';
        }
    }
 
    static class Book {
        String isbn;
        Student student;
 
        public Book(String isbn, Student student) {
            this.isbn = isbn;
            this.student = student;
        }
 
        @Override
        public String toString() {
            return "Book{" +
                    "isbn='" + isbn + '\'' +
                    ", student=" + student +
                    '}';
        }
    }
 
    public static void main(String[] args) {
        Student student=new Student("zhang3");
        Book book=new Book("1111",student);
        student.book=book;
        System.out.println(book.toString());
    }
 
}

發(fā)生了如下錯誤

到此這篇關于JAVA中StackOverflowError錯誤的解決的文章就介紹到這了,更多相關JAVA StackOverflowError錯誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java 字符串的拼接詳解

    Java 字符串的拼接詳解

    本文主要介紹Java 字符串的拼接知識內(nèi)容,這里整理了相關資料,及簡單的示例代碼,有興趣的小伙伴可以參考下
    2016-08-08
  • Spring Boot報錯:No session repository could be auto-configured, check your configuration的解決方法

    Spring Boot報錯:No session repository could be auto-configured

    這篇文章主要給大家介紹了關于Spring Boot報錯:No session repository could be auto-configured, check your configuration的解決方法,文中給出了詳細的解決方法,對遇到這個問題的朋友們具有一定參考價值,需要的朋友下面來一起看看吧。
    2017-07-07
  • Jmeter對響應數(shù)據(jù)實現(xiàn)斷言代碼實例

    Jmeter對響應數(shù)據(jù)實現(xiàn)斷言代碼實例

    這篇文章主要介紹了Jmeter對響應數(shù)據(jù)實現(xiàn)斷言代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java多線程中的ReentrantLock可中斷鎖詳細解讀

    Java多線程中的ReentrantLock可中斷鎖詳細解讀

    這篇文章主要介紹了Java多線程中的ReentrantLock可中斷鎖詳細解讀,ReentrantLock中的lockInterruptibly()方法使得線程可以在被阻塞時響應中斷,比如一個線程t1通過lockInterruptibly()方法獲取到一個可重入鎖,并執(zhí)行一個長時間的任務,需要的朋友可以參考下
    2023-12-12
  • 解決springboot 實體類String轉Date類型的坑

    解決springboot 實體類String轉Date類型的坑

    這篇文章主要介紹了解決springboot 實體類String轉Date類型的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java中BEAN與EJB的區(qū)別淺析

    Java中BEAN與EJB的區(qū)別淺析

    這篇文章主要介紹了Java中BEAN與EJB的區(qū)別淺析,本文總結了它們之間的不同之處,需要的朋友可以參考下
    2015-03-03
  • 關于springmvc-servlet中的配置小知識詳解

    關于springmvc-servlet中的配置小知識詳解

    這篇文章主要介紹了關于springmvc-servlet中的配置小知識詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 關于線程池你不得不知道的一些設置

    關于線程池你不得不知道的一些設置

    這篇文章主要介紹了關于線程池你不得不知道的一些設置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>
    2019-04-04
  • Spring異常捕獲且回滾事務解決方案

    Spring異常捕獲且回滾事務解決方案

    這篇文章主要介紹了Spring異常捕獲且回滾事務解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • C語言指針數(shù)組案例詳解

    C語言指針數(shù)組案例詳解

    這篇文章主要介紹了C語言指針數(shù)組案例詳解,本文通過案例詳細的解釋了指針與數(shù)組的初始化還有關系與應用,需要的朋友可以參考下這篇文章
    2021-07-07

最新評論

巴东县| 礼泉县| 陇西县| 贞丰县| 东城区| 济南市| 酒泉市| 清丰县| 登封市| 霸州市| 南和县| 都江堰市| 大渡口区| 永兴县| 陈巴尔虎旗| 城固县| 兴业县| 望奎县| 买车| 三明市| 博兴县| 墨竹工卡县| 建昌县| 淮安市| 新乡市| 隆德县| 勃利县| 伊宁县| 恭城| 志丹县| 潼关县| 平山县| 闽清县| 满城县| 林西县| 玉门市| 余江县| 太湖县| 额尔古纳市| 永靖县| 荔浦县|