刚学java几天有个问题挺纠结,还望解惑
首先申明我是个菜鸟,才看了进一个星期,本人在看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
------解决方案-------------------- 探讨 引用: 你确定这个类能运行而不会抛出StackOverflowError ++ 构造方法是私有的private,做的一个单例
------解决方案-------------------- 探讨 引用: 你确定这个类能运行而不会抛出StackOverflowError ++ 构造方法是私有的private,做的一个单例
------解决方案-------------------- 会抛出StackOverflowError,要看清楚作者在说什么问题
------解决方案-------------------- LZ的意思是“也就是上面的例子那么这里obj就是是在递归的生成了,这很显然就是个缺陷”,但实际上:不能
探讨 会抛出StackOverflowError,要看清楚作者在说什么问题
------解决方案-------------------- 就现在这代码而言的话,会抛出StackOverflowError异常的、
------解决方案-------------------- 只有是static才不会
探讨 引用: 引用: 引用: 你确定这个类能运行而不会抛出StackOverflowError ++ 构造方法是私有的private,做的一个单例 少打了几个字,别个代码肯定多加了 构造方法是私有的private,做的一个单例 就算是私有的那也会内存溢出了啊,再说了,在书中所说的例子是说明类的继承和嵌套的
------解决方案-------------------- thinking in java是一本好书 我也是新手
------解决方案-------------------- 这是LZ创造出来的bug吧?或是书上故意写出这样的bug举例?
------解决方案-------------------- 先看看基本的java语法
然后等你能够熟练的使用java的时候再去think in java吧
从技术上升到思想是一件很难的事情
别一开始就搞华丽的理论
没实际意义
写代码
是不断地经验累积的
新手同志
------解决方案-------------------- 这个BUG挺不错的,我没有写多少代码,但是我知道写这个代码是绝对不能运行的,思想上的东西,我不懂。
------解决方案-------------------- 肯定会 内存溢出的