java 循环展开_Java在Debug的时候,有些变量能无限展开(循环了)?
抛异常的时候,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的时候,有些变量能无限展开(循环了)?相关推荐
- java 检视_Java高并发系列——检视阅读(五)
JUC中工具类CompletableFuture CompletableFuture是java8中新增的一个类,算是对Future的一种增强,用起来很方便,也是会经常用到的一个工具类,熟悉一下. Co ...
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- 怎么理解java面向对象_Java 面向对象理解?
展开全部 java语言中62616964757a686964616fe78988e69d8331333332643330有三个典型的面向对象的特性:封装性.继承性和多态性.1. 封装性 java语言中 ...
- java 内存_java节省内存的几条建议
java节省内存的几条建议 引导语:Java的主要工作是通过编程语言来制作互联网页面.制作动态效果以及网站等技术,以下是小编整理的java节省内存的几条建议,欢迎参考阅读! 1. 尽量在合适的场合使用 ...
- java赋_Java赋值运算符(=)
赋值运算符是指为变量或常量指定数值的符号.赋值运算符的符号为"=",它是双目运算符,左边的操作数必须是变量,不能是常量或表达式. 其语法格式如下所示: 变量名称=表达式内容 在 J ...
- java 修饰_Java 修饰符
摘录自http://www.runoob.com/java/java-modifier-types.html Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰 ...
- java 语法_Java基础语法
标识符 定义 给包,类,方法,变量起名字的符号. 组成规则 标识符由字母.数字.下划线.美元符号组成. 命名原则:见名知意 包名:全部小写,多级包用.隔开. 举例:com.jourwon 类.接口:一 ...
- 快速排序 java代码_java实现快速排序
一:快速排序的特征 1:冒泡排序的改进 2:内部交换数据 3:分治+递归的思想 4:稳定排序 5:时间复杂度为:O(n*logn) 二:算法的整体思路 1:原始数据:12 11 6 87 23 8 5 ...
最新文章
- 如何构建高可用ZooKeeper集群
- 闪电模型数学_初中数学|23种几何模型汇总(中)
- 计算机二级html真题,计算机二级《Web程序设计》试题及答案
- Python 资料性网站。
- L - Two Ants Gym - 102823L
- 前端学习(625):数据类型导读
- 新手入门:史上最全Web端即时通讯技术原理详解
- iPhone 12还没出,iPhone 13开始了:将采用120Hz ProMotion显示屏
- Spark2.0.2+Zeppelin0.6.2 环境搭建 初探
- php外贸后台,…外贸购物商城网站开发… PHP开发 提供源代码 外贸网站案例 直接购买案例 雇佣兵网...
- SpringBoot集成gRPC微服务工程搭建实践
- 如何让php支持mysql的,怎么让php支持MySql
- drupal.behavior 和 document.ready 没有直接的关系
- dem数据(dem数据格式)
- Win10怎么录制内部声音 内录软件哪个好
- 2D游戏新手引导点光源和类迷雾实现
- 一个文字类RPG游戏框架(走过路过别错过)C++
- 企业运维,至少包括如下几个大方面: 1,桌面运维(以windows为主,工资偏低,桌面运维经理可以达到8K到10K,很多人在公司里干的就是安装windows系统,windows里的QQ坏了重装下,砸个
- 向gitlab推送push时报nullSha1: contains entries pointing to null sha1
- 自学软件测试怎么学?【史上最详细学习路线】(附全套资料)