Java非静态成员变量之死循环(详解)

作者:bateman6988 时间:2022-04-15 09:18:20 

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

如果大家想了解更多游戏活动与游戏攻略,请持续关注本站,本站小编将在第一时间为大家带来最好看、最好玩、最新鲜的游戏资讯。更多精彩内容,尽在jb51游戏频道!

来源:http://www.cnblogs.com/bateman6988/archive/2017/09/21/7571589.html

标签:java,非静态成员变量,死循环
0
投稿

猜你喜欢

  • 详解Java实现LRU缓存

    2023-06-05 19:24:08
  • 如何使用Spring工具类动态匹配url

    2021-06-16 05:09:08
  • SpringBoot中@ConditionalOnBean实现原理解读

    2023-04-25 14:24:54
  • 解决IDEA无法下载maven依赖的问题

    2023-12-05 17:06:59
  • 详解C#通过反射获取对象的几种方式比较

    2021-07-26 17:45:55
  • Android编程画图之抗锯齿解决方法

    2022-12-17 12:03:54
  • 通过springboot+mybatis+druid配置动态数据源

    2023-06-20 16:48:30
  • Jmeter测试必知的名词及环境搭建

    2022-11-23 19:34:07
  • C#实现上位机与欧姆龙PLC通讯(FINS)

    2022-10-05 03:10:08
  • 替换so文件来动态替换Flutter代码实现详解

    2023-06-23 16:24:06
  • 利用Spring Data MongoDB持久化文档数据的方法教程

    2023-05-05 02:36:54
  • Android Glide图片加载(加载监听、加载动画)

    2022-08-27 08:31:24
  • Android中使用Toast.cancel()方法优化toast内容显示的解决方法

    2021-12-14 05:17:03
  • IntelliJ IDEA 创建spring boot 的Hello World 项目(图解)

    2023-03-10 16:13:45
  • Android中ImageView用法实例分析

    2023-04-03 19:42:28
  • MyBatis动态SQL如何实现前端指定返回字段

    2023-11-28 23:00:58
  • C#中加载dll并调用其函数的实现方法

    2022-06-27 17:14:08
  • C#实现WPF项目复制和移动文件夹

    2023-06-07 16:49:16
  • Android下hook点击事件的示例

    2022-02-23 08:34:19
  • Android App中实现简单的刮刮卡抽奖效果的实例详解

    2023-07-12 19:06:44
  • asp之家 软件编程 m.aspxhome.com