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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java StackOverflowError詳解

Java StackOverflowError詳解

2021-11-18 10:28gentlezuo Java教程

這篇文章主要介紹了Java StackOverflowError詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

StackOverflowError

原因 : 函數(shù)調(diào)用棧太深了,注意代碼中是否有了循環(huán)調(diào)用方法而無法退出的情況

原理

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ò)誤。

典型的例子:

?
1
2
3
4
5
6
7
8
9
10
public class StackOverFlowDemo {
 
    public static void Foo(){
        Foo();
    }
 
    public static void main(String[] args) {
        Foo();
    }
}

今天我遇見了另外一種情況:當(dāng)兩個(gè)對(duì)象相互引用,在調(diào)用toString方法時(shí)會(huì)產(chǎn)生這個(gè)異常,因?yàn)樗鼈儠?huì)循環(huán)調(diào)用toString方法。

?
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//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());
    }
 
}

出現(xiàn)的錯(cuò)誤:

Java StackOverflowError詳解

toString()

說到toString()方法,在打印一個(gè)對(duì)象時(shí),會(huì)先調(diào)用這個(gè)對(duì)象的toString()方法,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class toStringDemo {
 
    static class A{
        @Override
        public String toString() {
            System.out.print("I ");
            return "";
        }
    }
 
    public static void main(String[] args) {
        A a=new A();
        System.out.println("love you."+a);
    }
}

會(huì)輸出:

I love you.

到此這篇關(guān)于Java StackOverflowError詳解的文章就介紹到這了,更多相關(guān)Java StackOverflowError內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/gentlezuo/article/details/90580116

延伸 · 閱讀

精彩推薦
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒有升過級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
主站蜘蛛池模板: 亚洲高清视频免费 | 国产精品久久久久不卡绿巨人 | 天天舔天天干天天操 | 91精品国产99久久 | 成全动漫视频在线观看 | 欧美日韩一区二区三区久久 | 日韩国产欧美精品综合二区 | 91久久综合九色综合欧美98 | 亚洲a视频在线 | 国产盗摄美女嘘嘘视频 | 3d动漫h在线观看网站蜜芽 | w7w7w7w7w免费 | 深夜福利在线播放 | 秋霞在线一级 | 深夜福利软件 | 五月婷婷在线观看 | 亚洲成a人片777777久久 | 免费看成年视频网页 | 日本不卡在线一区二区三区视频 | 60岁了天天要小伙子 | 久久这里只有精品无码3D | 乳环调教| 亚洲国产欧美在线人网站 | 国产精品va在线观看手机版 | 国产精品成人免费福利 | yin乱被cao系列 | 激情另类国内一区二区视频 | 日本免费一区二区三区四区五六区 | 国产福利视频一区二区微拍 | 亚洲人成影院午夜网站 | 欧美另类杂交a | 国产成人一级 | 日韩小视频在线观看 | 日本护士撒尿 | 乳女教师欲乱动漫无修版动画3d | 人人精品久久 | 四虎最新免费观看网址 | 欧美久久天天综合香蕉伊 | yy6080午夜国产免费福利 | 摸咪网在线影院在线观看 | 精品久久久久久久久免费影院 |