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() 会对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静态变量重复new_Java非静态成员变量之死循环(详解)相关推荐

  1. 为什么静态方法无法直接调用非静态成员变量和方法

    静态方法无法直接调用非静态成员变量和方法 看到这句话,要想到形容的是这样的如下 静态方法里面无法调用非静态变量 下面在写一个对比非静态的方法和静态方法调用变量对比 问题原因 静态变量和静态的方法是属于 ...

  2. 静态成员变量和非静态成员变量的5个主要区别

    1.从保存位置: a) 静态成员变量: 方法区的静态区域 b) 非静态成员变量: 堆内存中的对象空间里面 2.从书写格式上看: a) 静态成员变量: 在数据类型前面多了一个static修饰 b) 非静 ...

  3. 静态成员变量和非静态成员变量的对比

    静态成员变量和非静态成员变量的对比 1.存储的数据 静态成员变量存储的是所有对象共享的数据 非静态成员变量存储的是每个对象特有的数据 2.存储位置 静态成员变量是随着类的加载在方法区的静态区开辟内存了 ...

  4. 静态成员变量和非静态成员变量

    写在前面的总结: 静态成员变量是属于类的,就像是你买了一套房,属于固定资产:而非静态成员变量是不属于类的,就像是你租了一套房,主人套房子不属于你,因此,静态成员变量的调用可以直接通过类加域运算符的形式 ...

  5. qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数

    在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...

  6. 【C++静态成员函数不能调用非静态成员变量】

    C++静态成员函数不能调用非静态成员变量 静态成员函数 this指针 C++静态成员函数不能调用非静态成员变量原因 为什么要引入static 什么时候用static 致谢 静态成员函数 定义:静态成员 ...

  7. 静态内部类和访问非静态成员变量

    静态内部类访问包含它的外部类的非静态成员变量时,可以通过new外部类().成员的方式访问,这是因为静态的只能访问静态的,因为他们在对象没创建前就存在了.如果想访问非静态的则必须初始化该对象,因为只有初 ...

  8. 静态成员变量和非静态成员变量的区别

    1.它们在内存中出现的时间不同: 静态成员变量:它是在加载当前这个类的时候,就在方法区的静态区中存在. 非静态成员变量:当创建这个类的对象的时候,随着对象的产生在堆中出现. 2.它们所在的内存区域不同 ...

  9. 类中的静态成员函数访问非静态成员变量

    http://blog.csdn.net/u011857683/article/details/52294353 1.思路: 静态成员函数属于类(通过类访问,调用函数时没有提供this指针), 非静态 ...

最新文章

  1. Object-c学习之路二(oc内存管理黄金法则1)
  2. Hyperledger Besu企业以太坊快速教程
  3. MyBatis中动态SQL
  4. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法
  5. 无法运行的愿意_分享减肥食谱一周瘦10斤,你愿意尝试吗?
  6. 机器学习分类_机器学习之简单分类模型
  7. sqlserver 导入mysql,在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合...
  8. requests请求报字符编码异常信息
  9. 华为集齐 AI 龙珠,“召唤神龙”为期不远
  10. my97Date如何多选日期且无重复日期
  11. Memcache的 简介
  12. mysql硬盘复制无法启动_磁盘的移动导致MySQL数据启动失败
  13. 【转】javascript弹出固定大小的窗口页面
  14. java中实现下载音乐_如何用JAVA的IO流下载落网音乐?
  15. R语言中ggplot Theme Assist安装使用教程
  16. 重装上阵两个人合体机器人_重装上阵:组装机器人是正常人的行为,要我就搞出点花样来...
  17. 甘孜州2021高考 康定中学宴冬梅成绩查询,最新2021甘孜州高中排名
  18. java 实现金额大小写转换
  19. GitHub上最励志的计算机自学教程(重制版)
  20. 如何解决图片在移动端清晰显示的问题

热门文章

  1. webService简单入门实战(一)
  2. 水题总结NYOJ74,1094,60,975,111,833
  3. SpringBoot使用ELK日志收集
  4. oracle菜鸟学习之 复杂的更新语句使用
  5. aspectj 注解
  6. 基于MHA+semi sync实现mysql数据库的高可用
  7. 四步奠定SDN部署基石
  8. Redis之Ubuntu开机启动
  9. (转) Twisted 第四部分: 由Twisted支持的诗歌客户端
  10. window.showModalDialog乱码(完美)解决方案