关于java在类定义里面创建自己的对象的看法

我也是初学java,刚看到这个java的程序可以在类里面创建自己的对象,我就感到很意外,而且无法理解,如下图:
在这里插入图片描述我的疑问是这样的:那个demo函数也能调用自己的对象,类都没解析完怎么会有对象呢?可是要把类解析完就得有对象,因为类成员函数里有对象,这就陷入了矛盾了啊?

然后我就开始查资料了,结合老师给我的代码,我发现可以这么理解:

在这里插入图片描述
这个代码陷入了无限递归,两者的区别是第一个是在代码层面调用了自身,而第二幅图是在编译层面调用自身。

java的执行过程是:当程序载入时,读取了该java文件,将静态方法读到到了内存中的静态方法保存区域,将class读到了类的区域,注意:这时候的class并没有创建实例对象,内存中只是有了创建class的机器了。接下来main方法作为程序的入口方法被执行(这是只有方法没有实例对象),方法中调用了class的机器生产了一个A对象,再将A对象装载到内存中。说明编译层面其实并没有创建对象,只是告诉程序这里需要有一个对象,所以没有陷入递归。

事实上这种情况不只是java,C++也存在,如下:
在这里插入图片描述
暂且就这么理解吧,如果大佬觉得有错误,欢迎在评论区指正。

如果有兴趣了解更多相关内容,欢迎来我的个人博客看看:eyes++的个人空间

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值