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,  这里的一个关键点  是这个静态成员是属于类的,并不属于某一个实例对像,所以不会产生死循环。

最新文章

  1. 缓存Cookie、session、localStorage的区别
  2. C# 之 DataReader 和 DataSet 的区别
  3. oracle字符集相关问题
  4. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
  5. C#压缩文件为zip格式
  6. Makefile写法
  7. SQL Prompt——SQL智能提示插件
  8. 【mongoDB查询进阶】聚合管道(三)--表达式操作符
  9. Navicat破解
  10. ssms创建链接服务器
  11. 第三章Div水平居中
  12. mongoDB oplog的说明及应用
  13. 解密DNSPOD应对DDoS攻击招式!
  14. Pandas的排序和排名(Series, DataFrame) + groupby
  15. codeforces水题100道 第十一题 Codeforces Round #143 (Div. 2) A. Team (brute force)
  16. RabbitMQ详解(一)------简介与安装(Docker)
  17. 让 linux centos 文件夹地址栏 位置栏显示出来的方法
  18. 在php代码中调用帝国cms头部变量temp.header的方法
  19. java框架----&gt;quartz整合spring(一)
  20. Git学习笔记——从一台电脑上传文件到Github上

热门文章

  1. 程序媛计划——python中级课时1
  2. 201621123018《Java程序设计》第4周学习报告
  3. TCP BBR - 一键安装最新内核并开启 TCP BBR
  4. TDDL与Spring Boot集成Version报错——跟踪与解决
  5. HTML 5 使用 FileReader、FormData实现文件上传
  6. Spring JdbcTemplate源码阅读报告
  7. JavaWeb之Servlet中ServletConfig和ServletContext
  8. mac安装brew 软件包管理工具Homebrew
  9. 项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
  10. 扩展中国剩余定理(扩展CRT)详解