av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JAVA中StackOverflowError錯(cuò)誤的解決

瀏覽:84日期:2022-08-14 09:47:40
StackOverflowError 原因

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

原理

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

所以當(dāng)你在一個(gè)函數(shù)再調(diào)用此函數(shù)時(shí),而忘記設(shè)置出口就會(huì)出現(xiàn)這個(gè)錯(cuò)誤。

今天我遇到的問(wèn)題就是我想覆寫(xiě)hash函數(shù),想要在此函數(shù)調(diào)用的結(jié)果是原來(lái)的hash函數(shù)調(diào)用的結(jié)果再隨便加一個(gè)字符串,結(jié)果就忽視了函數(shù)會(huì)一直調(diào)用下去,相當(dāng)于沒(méi)有設(shè)置遞歸函數(shù)的出口,所以導(dǎo)致了StackOverflowError錯(cuò)誤。

這是當(dāng)時(shí)我的代碼

JAVA中StackOverflowError錯(cuò)誤的解決

發(fā)生的錯(cuò)誤

JAVA中StackOverflowError錯(cuò)誤的解決

當(dāng)我把函數(shù)名字改一改就能正常運(yùn)行。還有原來(lái)的一些設(shè)置圖書(shū)和學(xué)生類(lèi)時(shí),這兩個(gè)類(lèi)中都覆寫(xiě)了toString方法,這兩個(gè)類(lèi)也可以互相調(diào)用,當(dāng)最后調(diào)用tostring時(shí)也會(huì)發(fā)生錯(cuò)誤。

下面是我在網(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方法@Overridepublic 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;} @Overridepublic 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ā)生了如下錯(cuò)誤

JAVA中StackOverflowError錯(cuò)誤的解決

到此這篇關(guān)于JAVA中StackOverflowError錯(cuò)誤的解決的文章就介紹到這了,更多相關(guān)JAVA StackOverflowError錯(cuò)誤內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产一级生活片 | 特级特黄aaaa免费看 | 日日干夜夜干 | 国产精品久久久久久久久久久久久久 | 中文字幕在线观看免费视频 | 黄色网址在线免费观看 | 国产精彩视频 | 在线观看的av网站 | 欧美在线视频观看 | 黄视频在线播放 | 日韩精品观看 | 91精品国产99久久久久久红楼 | 91久久国产综合久久91精品网站 | 欧美在线播放 | 一级黄色片免费看 | 91久久久久久久久 | 欧美精品一| 精品久久网站 | 国产一级一片免费播放放a 免费国产视频 | 欧美极品一区 | www国产精品 | 网站av| 日韩在线播放视频 | 国产91在线观看 | 中文字幕亚洲视频 | 免费黄色片网站 | 免费黄色小视频 | 国产午夜精品一区二区三区嫩草 | 一区二区三区中文字幕 | 日本高清中文字幕 | 久久久久一区 | 色婷婷在线视频 | 天天干夜夜 | 黄色大片av | 青青草视频污 | 亚洲成人久久久 | 亚欧在线观看 | 国产一区二区三区视频在线 | 偷拍一区二区三区 | 麻豆一级片 | 亚洲欧美日韩成人 |