源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-03-20 09:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java非静态成员变量之死循环(详解)
[b]1.非静态成员变量[/b] 当成员变量为非静态成员变量且对当前类进行实例化时,将会产生死循环 [b]例子:[/b]
public class ConstructorCls {
 private ConstructorCls obj=new ConstructorCls();
}
public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}
[b]结果:[/b]
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)
[b]分析:[/b]当new ConstrutorCls() 会对ConstrutorCls进行实例 化,后然对这个类的成员obj进行初始化,obj又是对自已所在类进行实列化,这一样一直下去,直到StackOverflowError [b]2.静态成员变量[/b] 静态成员变量是属于类的,不会出现死循环 [b]例如:[/b]
public class ConstructorCls {
 private static ConstructorCls obj=new ConstructorCls(); 
}
public class TestC {

 public static void main(String[] args) {
  ConstructorCls c =new ConstructorCls();
 }
}
[b]分析:[/b]当new ConstructorCls()时,首先将ConstructorCls加截到JVM中,在加载时对该类的静态成员进行初始化(仅加载时初始化一次),初始化obj对像,new 一个ConstructorCls, 这里的一个关键点 是这个静态成员是属于类的,并不属于某一个实例对像,所以不会产生死循环。 以上就是小编为大家带来的Java非静态成员变量之死循环(详解)的全部内容了,希望大家喜欢哦~ 如果大家想了解更多游戏活动与游戏攻略,请持续关注本站,本站小编将在第一时间为大家带来最好看、最好玩、最新鲜的游戏资讯。更多精彩内容,尽在jb51游戏频道!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部