构造器递归调用
来源:互联网 发布:mac充电器如何使用 编辑:程序博客网 时间:2024/06/05 11:17
public class Constructor { Constructor constructor = new Constructor();// Constructor constructor ; // 1// static Constructor constructor = new Constructor();//2 public Constructor() { System.out.println("constructor"); } public static void main(String[] args) { Constructor c = new Constructor(); }}
上面程序就会发生递归调用。
首先明确,类初始化时实例变量将会在构造函数中初始化
main函数中声明局部变量c ,并对其初始化,这时程序会在堆空间里为其申请空间并完成对内存空间赋值
堆内存中c对象中constructor又回指向另一个Constructor的对象,于是
所以堆空间另一个constructor对象又要完成初始化,于是。。。
但是注释掉的两种变量声明不会引发递归。
对于1,在完成图1之后constructor对象指向null,对其赋值的方法只能是再次什么一个Constructor对象,付给它
对于2,类变量的初始化在类加载后程序对其初始化,因为类变量在程序中只会占用同一块空间,所以不会反复申请空间,也就不会递归了。
0 0
- 构造器递归调用
- java 构造函数 重载 递归调用
- 构造器调用顺序
- 构造器的调用
- 构造器调用顺序
- this 构造器中调用构造器
- 在构造器中调用构造器
- java 构造器中调用构造器
- Java构造器:级联调用,调用兄弟构造器
- 构造器的调用顺序
- java的构造器调用
- java 构造器调用顺序
- 构造器的调用顺序
- 关于构造器调用顺序
- 构造器的调用顺序
- 构造器的调用顺序
- 构造器的调用顺序
- 构造器的调用顺序
- android优化问题
- 由Android打包混淆、导签名引发的几个事情及解决办法
- 提供一个获取CCTexture2D crash的方案
- 学生时代结束了
- 配置cisco vpn
- 构造器递归调用
- Android软件安全开发实践(上)
- 急急急!!用java代码远程调用linux命令为啥不出来结果啊!!!命令:java -version
- Python环境搭建
- 模拟点击上传Ie不传文件名
- linux 终端下播放电影
- 第16周项目1-指来指去
- 盘点 2013 年互联网发生的大事
- 简单设置让EasyUI显示中文,日期选择框格式为yyyy-MM-dd格式