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

 更新时间:2017年09月22日 12:47:04   作者:bateman6988  
下面小编就为大家带来一篇Java非静态成员变量之死循环(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

以上就是小编为大家带来的Java非静态成员变量之死循环(详解)的全部内容了,希望大家喜欢哦~

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

相关文章

  • 深入理解Java设计模式之享元模式

    深入理解Java设计模式之享元模式

    这篇文章主要介绍了JAVA设计模式之享元模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2021-11-11
  • SpringBoot数据层测试事务回滚的实现流程

    SpringBoot数据层测试事务回滚的实现流程

    这篇文章主要介绍了SpringBoot数据层测试事务回滚的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • java 替换docx文件中的字符串方法实现

    java 替换docx文件中的字符串方法实现

    这篇文章主要介绍了java 替换docx文件中的字符串方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • springboot验证码的生成与验证的两种方法

    springboot验证码的生成与验证的两种方法

    本文主要介绍了springboot验证码的生成与验证的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 如何通过Java监听MySQL数据的变化

    如何通过Java监听MySQL数据的变化

    对于二次开发来说,很大一部分就找找文件和找数据库的变化情况,下面这篇文章主要给大家介绍了关于如何通过Java监听MySQL数据的变化的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Java多线程通信实现方式详解

    Java多线程通信实现方式详解

    这篇文章主要介绍了Java多线程通信实现方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java连接MYSQL数据库的详细步骤

    Java连接MYSQL数据库的详细步骤

    这篇文章主要为大家介绍了Java连接MYSQL数据库的详细步骤,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • JAVA正则表达式过滤文件的实现方法

    JAVA正则表达式过滤文件的实现方法

    这篇文章主要介绍了JAVA正则表达式过滤文件的实现方法的相关资料,希望通过本文大家能够掌握理解这部分内容,需要的朋友可以参考下
    2017-09-09
  • Java对象创建的几种方式总结

    Java对象创建的几种方式总结

    本文详细介绍了Java中创建对象的五种方法,包括使用new关键字、Class的newInstance()方法、Constructor的newInstance()方法、克隆以及反序列化,同时讨论了这些方式是否调用了构造器以及创建对象的条件,文章还提供了示例代码进行演示,需要的朋友可以参考下
    2025-02-02
  • mybatis-plus 关于savebatch,saveorupdatebatch遇到的坑及解决办法

    mybatis-plus 关于savebatch,saveorupdatebatch遇到的坑及解决办法

    本文主要介绍了mybatis-plus 关于savebatch,saveorupdatebatch遇到的坑及解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论