抛异常的时候,Java Debug 时,有些变量能无限展开,怎么做到的?

先来一个报错的例子:

Exception in thread "main" java.lang.StackOverflowError

at llj.mf.ace.C.(C.java:3)

at llj.mf.ace.B.(B.java:5)

at llj.mf.ace.C.(C.java:5)

at llj.mf.ace.B.(B.java:5)

at llj.mf.ace.C.(C.java:5)

at llj.mf.ace.B.(B.java:5)

at llj.mf.ace.C.(C.java:5)

at llj.mf.ace.B.(B.java:5)

....

....

报错的代码:

public class Ace {

public static void main(String[] args) {

new B();

}

}

public class B {

C c = new C();

}

public class C {

B b = new B();

}

报错的原因:创建 B 对象的时候,B 对象会创建一个 C 对象,C 对象又会创建一个 B 对象,。。。这个会创建无数个 B 对象、C 对象,所以就 StackOverflowError了

能无限展开的例子:

/**

* 这个debug的时候,有无限个下级(循环了)(你中有我,我中有你)

*/

public class BCBC {

public static void main(String[] args) {

B b = new B();

C c = new C();

b.c = c;

c.b = b;

System.out.println(b.equals(c)); // 断点处

}

static class B {

C c;

}

static class C {

B b;

}

}

上面示例 Debug 截图:

这里只创建了一个 B 对象、一个 C 对象,然后互相引用了而已(指向对方的地址)。(我指着你,你指着我: B C)

这就解释了,为什么抛异常的时候,Java Debug 时,有些变量能无限展开

原文:http://www.cnblogs.com/liaolongjun/p/6708279.html

java 循环展开_Java在Debug的时候,有些变量能无限展开(循环了)?相关推荐

  1. java 检视_Java高并发系列——检视阅读(五)

    JUC中工具类CompletableFuture CompletableFuture是java8中新增的一个类,算是对Future的一种增强,用起来很方便,也是会经常用到的一个工具类,熟悉一下. Co ...

  2. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  3. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  4. 怎么理解java面向对象_Java 面向对象理解?

    展开全部 java语言中62616964757a686964616fe78988e69d8331333332643330有三个典型的面向对象的特性:封装性.继承性和多态性.1. 封装性 java语言中 ...

  5. java 内存_java节省内存的几条建议

    java节省内存的几条建议 引导语:Java的主要工作是通过编程语言来制作互联网页面.制作动态效果以及网站等技术,以下是小编整理的java节省内存的几条建议,欢迎参考阅读! 1. 尽量在合适的场合使用 ...

  6. java赋_Java赋值运算符(=)

    赋值运算符是指为变量或常量指定数值的符号.赋值运算符的符号为"=",它是双目运算符,左边的操作数必须是变量,不能是常量或表达式. 其语法格式如下所示: 变量名称=表达式内容 在 J ...

  7. java 修饰_Java 修饰符

    摘录自http://www.runoob.com/java/java-modifier-types.html Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰 ...

  8. java 语法_Java基础语法

    标识符 定义 给包,类,方法,变量起名字的符号. 组成规则 标识符由字母.数字.下划线.美元符号组成. 命名原则:见名知意 包名:全部小写,多级包用.隔开. 举例:com.jourwon 类.接口:一 ...

  9. 快速排序 java代码_java实现快速排序

    一:快速排序的特征 1:冒泡排序的改进 2:内部交换数据 3:分治+递归的思想 4:稳定排序 5:时间复杂度为:O(n*logn) 二:算法的整体思路 1:原始数据:12 11 6 87 23 8 5 ...

最新文章

  1. 如何构建高可用ZooKeeper集群
  2. 闪电模型数学_初中数学|23种几何模型汇总(中)
  3. 计算机二级html真题,计算机二级《Web程序设计》试题及答案
  4. Python 资料性网站。
  5. L - Two Ants Gym - 102823L
  6. 前端学习(625):数据类型导读
  7. 新手入门:史上最全Web端即时通讯技术原理详解
  8. iPhone 12还没出,iPhone 13开始了:将采用120Hz ProMotion显示屏
  9. Spark2.0.2+Zeppelin0.6.2 环境搭建 初探
  10. php外贸后台,…外贸购物商城网站开发… PHP开发 提供源代码 外贸网站案例 直接购买案例 雇佣兵网...
  11. SpringBoot集成gRPC微服务工程搭建实践
  12. 如何让php支持mysql的,怎么让php支持MySql
  13. drupal.behavior 和 document.ready 没有直接的关系
  14. dem数据(dem数据格式)
  15. Win10怎么录制内部声音 内录软件哪个好
  16. 2D游戏新手引导点光源和类迷雾实现
  17. 一个文字类RPG游戏框架(走过路过别错过)C++
  18. 企业运维,至少包括如下几个大方面: 1,桌面运维(以windows为主,工资偏低,桌面运维经理可以达到8K到10K,很多人在公司里干的就是安装windows系统,windows里的QQ坏了重装下,砸个
  19. 向gitlab推送push时报nullSha1: contains entries pointing to null sha1
  20. 自学软件测试怎么学?【史上最详细学习路线】(附全套资料)

热门文章

  1. 英国加密期货交易所增加比特币现金合约
  2. .NET开发辅助工具-ANTS Performance Profiler【转载】
  3. HBase单机模式部署
  4. 活在未来,需要知道了解过去
  5. Java多线程面试题
  6. DevExpress.GridControl.gridView的一些注意
  7. 致Oracle DBA 的一封信 (网上流传)
  8. jquery ajax return值不能取得的解决方案
  9. hive -f 传递参数
  10. Builder 建造者模式