JAVA非静态成员变量之死循环
2024-08-28 17:39:14
1.非静态成员变量
当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环
例子:
public class ConstructorCls { private ConstructorCls obj=new ConstructorCls(); }
public class TestC { public static void main(String[] args) {
ConstructorCls c =new ConstructorCls();
}
}
结果:
Exception in thread "main" java.lang.StackOverflowError
at com.ConstructorCls.<init>(ConstructorCls.java:7)
at com.ConstructorCls.<init>(ConstructorCls.java:7)
at com.ConstructorCls.<init>(ConstructorCls.java:7)
分析:当new ConstrutorCls() 会对ConstrutorCls进行实例 化,后然对这个类的成员obj进行初始化,obj又是对自已所在类进行实列化,这一样一直下去,直到StackOverflowError
2.静态成员变量
静态成员变量是属于类的,不会出现死循环
例如:
public class ConstructorCls {
private static ConstructorCls obj=new ConstructorCls();
}
public class TestC { public static void main(String[] args) {
ConstructorCls c =new ConstructorCls();
}
}
分析:当new ConstructorCls()时,首先将ConstructorCls加截到JVM中,在加载时对该类的静态成员进行初始化(仅加载时初始化一次),初始化obj对像,new 一个ConstructorCls, 这里的一个关键点 是这个静态成员是属于类的,并不属于某一个实例对像,所以不会产生死循环。
最新文章
- 缓存Cookie、session、localStorage的区别
- C# 之 DataReader 和 DataSet 的区别
- oracle字符集相关问题
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
- C#压缩文件为zip格式
- Makefile写法
- SQL Prompt——SQL智能提示插件
- 【mongoDB查询进阶】聚合管道(三)--表达式操作符
- Navicat破解
- ssms创建链接服务器
- 第三章Div水平居中
- mongoDB oplog的说明及应用
- 解密DNSPOD应对DDoS攻击招式!
- Pandas的排序和排名(Series, DataFrame) + groupby
- codeforces水题100道 第十一题 Codeforces Round #143 (Div. 2) A. Team (brute force)
- RabbitMQ详解(一)------简介与安装(Docker)
- 让 linux centos 文件夹地址栏 位置栏显示出来的方法
- 在php代码中调用帝国cms头部变量temp.header的方法
- java框架---->;quartz整合spring(一)
- Git学习笔记——从一台电脑上传文件到Github上
热门文章
- 程序媛计划——python中级课时1
- 201621123018《Java程序设计》第4周学习报告
- TCP BBR - 一键安装最新内核并开启 TCP BBR
- TDDL与Spring Boot集成Version报错——跟踪与解决
- HTML 5 使用 FileReader、FormData实现文件上传
- Spring JdbcTemplate源码阅读报告
- JavaWeb之Servlet中ServletConfig和ServletContext
- mac安装brew 软件包管理工具Homebrew
- 项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
- 扩展中国剩余定理(扩展CRT)详解