本文主要是介绍关于java在类定义里面创建自己的对象的看法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我也是初学java,刚看到这个java的程序可以在类里面创建自己的对象,我就感到很意外,而且无法理解,如下图:
我的疑问是这样的:那个demo函数也能调用自己的对象,类都没解析完怎么会有对象呢?可是要把类解析完就得有对象,因为类成员函数里有对象,这就陷入了矛盾了啊?
然后我就开始查资料了,结合老师给我的代码,我发现可以这么理解:
这个代码陷入了无限递归,两者的区别是第一个是在代码层面调用了自身,而第二幅图是在编译层面调用自身。
java的执行过程是:当程序载入时,读取了该java文件,将静态方法读到到了内存中的静态方法保存区域,将class读到了类的区域,注意:这时候的class并没有创建实例对象,内存中只是有了创建class的机器了。接下来main方法作为程序的入口方法被执行(这是只有方法没有实例对象),方法中调用了class的机器生产了一个A对象,再将A对象装载到内存中。说明编译层面其实并没有创建对象,只是告诉程序这里需要有一个对象,所以没有陷入递归。
事实上这种情况不只是java,C++也存在,如下:
暂且就这么理解吧,如果大佬觉得有错误,欢迎在评论区指正。
如果有兴趣了解更多相关内容,欢迎来我的个人博客看看:eyes++的个人空间
这篇关于关于java在类定义里面创建自己的对象的看法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!