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

网友投稿 224 2023-03-31


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.(ConstructorCls.java:7)

at com.ConstructorCls.(ConstructorCls.java:7)

at com.ConstructorCls.(ConstructorCls.java:7)

分析:当new ConstrutorCls() 会对Construtohttp://rCls进行实例 http://化,后然对这个类的成员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游戏频道!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口测试用例的编写(接口的测试用例一般都怎么写)
下一篇:java发送email一般步骤(实例讲解)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~