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实现字符串四则运算公式解析工具类的方法

    2021-11-03 09:22:23
  • C#实现基于Base64的加密解密类实例

    2023-02-09 19:35:57
  • Java传入用户名和密码并自动提交表单实现登录到其他系统的实例代码

    2023-09-20 00:40:46
  • intellij idea修改maven配置时总是恢复默认配置的解决方法idea版本(2020.2.x)

    2023-06-30 23:56:10
  • java中struts2实现简单的文件上传与下载

    2022-12-23 22:53:21
  • UGUI绘制多点连续的平滑曲线

    2022-01-16 06:22:45
  • android视频截屏&手机录屏实现代码

    2022-12-10 15:20:31
  • android仿微信聊天界面 语音录制功能

    2022-09-21 17:55:08
  • SpringBoot自动装配原理详解

    2023-07-03 05:49:08
  • Gradle:修改默认的Build配置文件名方式

    2023-11-28 20:18:01
  • 详解Java编程的Observer观察者设计模式

    2023-11-10 04:06:07
  • java加载properties文件的六种方法总结

    2023-09-20 05:24:54
  • 浅谈Java之Map 按值排序 (Map sort by value)

    2021-06-20 01:23:10
  • C#图像处理之边缘检测(Sobel)的方法

    2022-05-12 02:05:50
  • Android进阶Handler应用线上卡顿监控详解

    2022-12-21 11:31:00
  • C语言与C++中关于字符串使用的比较

    2022-01-22 01:30:37
  • java selenium使用浏览器调试工具实现方法

    2023-07-27 04:04:22
  • 详解java中String、StringBuilder、StringBuffer的区别

    2023-06-17 06:03:23
  • 关于SpringBoot中controller参数校验的使用

    2023-02-24 04:24:10
  • android开发基础教程—SharedPreferences读写

    2022-11-30 08:07:16
  • asp之家 软件编程 m.aspxhome.com