首先申明我是个菜鸟,才看了进一个星期,本人在看thinking in java的时候发现里面有很多的例子是先下面的,
- Java code
public class inherit{ String name = new String("ok\n"); inherit obj = new inherit(); public static void main(String[] args) { inherit tmp = new inherit(); System.out.println("game over\n"); } }
这不是原例但是我在想他这样做的话在类inherit还没有完全的申明的时候,就可以建对象实例的话那么,也就是上面的例子那么这里obj就是是在递归的生成了,这很显然就是个缺陷,为什么那本书的作者还要那他作为例子,其次为什么java不学c++在类没建立完整的时候不允许生成实例对象,只是允许生成一个本对象的引用呢?
求解。。。
------解决方案--------------------
你确定这个类能运行而不会抛出StackOverflowError
------解决方案--------------------
main是程序的入口函数 ,
static是属于类的不属于对象 ,static在类加载的时候会加载到方法区
------解决方案--------------------
肯定会 内存溢出的
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
会抛出StackOverflowError,要看清楚作者在说什么问题
------解决方案--------------------
LZ的意思是“也就是上面的例子那么这里obj就是是在递归的生成了,这很显然就是个缺陷”,但实际上:不能
------解决方案--------------------
就现在这代码而言的话,会抛出StackOverflowError异常的、
------解决方案--------------------
只有是static才不会
------解决方案--------------------
thinking in java是一本好书 我也是新手
------解决方案--------------------
这是LZ创造出来的bug吧?或是书上故意写出这样的bug举例?
------解决方案--------------------
先看看基本的java语法
然后等你能够熟练的使用java的时候再去think in java吧
从技术上升到思想是一件很难的事情
别一开始就搞华丽的理论
没实际意义
写代码
是不断地经验累积的
新手同志
------解决方案--------------------
这个BUG挺不错的,我没有写多少代码,但是我知道写这个代码是绝对不能运行的,思想上的东西,我不懂。
------解决方案--------------------
肯定会 内存溢出的