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

Java StackOverflowError詳解

 更新時間:2021年08月13日 15:54:07   作者:gentlezuo  
這篇文章主要介紹了Java StackOverflowError詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

StackOverflowError

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

原理

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

典型的例子:

public class StackOverFlowDemo {

    public static void Foo(){
        Foo();
    }

    public static void main(String[] args) {
        Foo();
    }
}

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

//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)的錯誤:

stackoverflow

toString()

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

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);
    }
}

會輸出:

I love you.

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

相關(guān)文章

  • 如何用Java實(shí)現(xiàn).env文件讀取敏感數(shù)據(jù)

    如何用Java實(shí)現(xiàn).env文件讀取敏感數(shù)據(jù)

    這篇文章主要介紹了如何用Java實(shí)現(xiàn).env文件讀取敏感數(shù)據(jù),并提供了一個自動配置類EnvAutoConfiguration,common-env-starter-demo模塊展示了如何配置和啟動一個簡單的Spring Boot應(yīng)用程序,需要的朋友可以參考下
    2025-02-02
  • Java實(shí)現(xiàn)的自定義類加載器示例

    Java實(shí)現(xiàn)的自定義類加載器示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的自定義類加載器,結(jié)合具體實(shí)例形式分析了java自定義類加載器的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • Java實(shí)現(xiàn)線程同步的四種方式總結(jié)

    Java實(shí)現(xiàn)線程同步的四種方式總結(jié)

    Java線程同步屬于Java多線程與并發(fā)編程的核心點(diǎn),需要重點(diǎn)掌握,下面我就來詳解Java線程同步的4種主要的實(shí)現(xiàn)方式,需要的可以參考一下
    2022-09-09
  • 基于java實(shí)現(xiàn)簡單的圖片類別識別

    基于java實(shí)現(xiàn)簡單的圖片類別識別

    這篇文章主要為大家詳細(xì)介紹了如何基于java實(shí)現(xiàn)簡單的圖片類別識別功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 深入淺出RocketMQ的事務(wù)消息

    深入淺出RocketMQ的事務(wù)消息

    RocketMQ事務(wù)消息(Transactional?Message)是指應(yīng)用本地事務(wù)和發(fā)送消息操作可以被定義到全局事務(wù)中,要么同時成功,要么同時失敗。本文主要介紹了RocketMQ事務(wù)消息的相關(guān)知識,需要的可以參考一下
    2023-04-04
  • Java中父類怎么調(diào)用子類的方法

    Java中父類怎么調(diào)用子類的方法

    這篇文章主要介紹了Java父類調(diào)用子類的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Spring在多線程下保持事務(wù)的一致性的方法實(shí)現(xiàn)

    Spring在多線程下保持事務(wù)的一致性的方法實(shí)現(xiàn)

    當(dāng)Spring在多線程環(huán)境下運(yùn)行時,確保事務(wù)一致性是非常重要的,本文主要介紹了Spring在多線程下保持事務(wù)的一致性的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Java實(shí)現(xiàn)的計(jì)算稀疏矩陣余弦相似度示例

    Java實(shí)現(xiàn)的計(jì)算稀疏矩陣余弦相似度示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的計(jì)算稀疏矩陣余弦相似度功能,涉及java基于HashMap的數(shù)值計(jì)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 使用SpringCache操作Redis緩存數(shù)據(jù)的示例代碼

    使用SpringCache操作Redis緩存數(shù)據(jù)的示例代碼

    SpringCache是一個框架,實(shí)現(xiàn)了基于注解的緩存功能,只需要簡單的加一個注解,就能實(shí)現(xiàn)緩存功能,本文給大家介紹了如何使用SpringCache操作Redis緩存數(shù)據(jù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-01-01
  • maven實(shí)現(xiàn)docker自動化部署插件的使用

    maven實(shí)現(xiàn)docker自動化部署插件的使用

    本文主要介紹了maven實(shí)現(xiàn)docker自動化部署插件的使用,分享給大家,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

新田县| 吐鲁番市| 怀化市| 锦州市| 安龙县| 镇宁| 博客| 临西县| 石泉县| 都兰县| 大厂| 尉犁县| 门源| 汕尾市| 广灵县| 湟中县| 内黄县| 霞浦县| 元谋县| 大渡口区| 澄城县| 定南县| 来安县| 洛隆县| 靖宇县| 杂多县| 容城县| 中超| 宁武县| 威海市| 绥化市| 怀柔区| 安国市| 甘孜县| 蒲江县| 周宁县| 望都县| 麻栗坡县| 无极县| 宜良县| 南澳县|