一个基础的问题啊!但是想不明白阿

guaigm 2004-09-28 09:46:13

public class Pclass
{
Pclass objClass = new Pclass()
public void method()
{
objClass.xxxxx();
}
public void method1()
{
objClass.xxxx();
}
}
这样编译没有问题啊!但是执行的时候总是不行啊!
难道不能所有的方法都使用第三行的对象吗?
...全文
267 点赞 收藏 31
写回复
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
guaigm 2004-10-11
还没明白!但是谢谢大家!我再看看啊
回复
power17 2004-10-10
乖乖妹:
那你认为程序执行到
Pclass objClass = new Pclass()
以后会怎么办呢?
是不是你把哪里弄错了
比如说迭代……
回复
ChDw 2004-10-10
这个明显是一个死循环,你可以这样
public class Pclass
{
Pclass objClass;
public Pclass() {
System.out.println("Init");
objClass = new Pclass();
}
}

这样就很明显看出出现了死循环了。
回复
guaigm 2004-10-09
着不是死循环啊。。。。。。。。。我看张孝祥上面讲的但是我没看明白啊。。。
回复
power17 2004-10-09
就是一个死循环的问题吧。
回复
tutor666 2004-10-09
自己的方法直接用,何必绕弯子呢,无意义。
回复
langxiaofeng 2004-10-09
不能拿C++的眼光来看JAVA,,,,,
: jamesfancy()边城狂人(James Fancy) ( )
说的有道理
回复
ChDw 2004-10-09
这个是明显的死循环!
public class Pclass
{
Pclass objClass = new Pclass();
}

在你第一次new Pclass时候,它首先初始化所有的成员变量,即objClass = new Pclass();
这个时候就会再次调用Pclass的初始化过程,它又发现了objClass = new Pclass();这个时候
它还是再需要再new Pclass();

结果,无限循环,一直处于new Pclass的状态直到堆栈溢出!

所以你写成
public class Pclass
{
static Pclass objClass = new Pclass();
}
就没有问题,因为在第一次加载这个类的时候就开始初始化静态成员变量objClass = new Pclass,
但是在new的过程中是不需要理会静态成员变量的,这样程序才能正常执行
回复
fooy5460 2004-10-09
老大,有没有人编译过?

除了缺少xxxxx();xxxx();外,编译完全正确。


回复
angelheart 2004-10-09
递归没出口
回复
是不是包package的问题
回复
javaororacle 2004-10-09
就算有了main,如果调用new Pclass();也会溢出,不停的在new
回复
javaororacle 2004-10-09
没有main怎么执行?
回复
conquer2004 2004-10-09
我还是看不出来问题在哪,唉……
找书看……
不过觉得没有死循环,至少c++里是这样……
回复
Tasia 2004-10-09
单例模式呀,就可以只有一个对象。
回复
bluesky35 2004-10-09
可以使用inner class
回复
mlovex 2004-10-09
你所谓的执行 是什么意思 ??

就这一个类 让它自己执行?? 没有静态的方法 根本驱动不了啊
回复
guaigm 2004-10-09
还有人回答吗?
回复
guaigm 2004-10-09
好像都不是啊
回复
guaigm 2004-10-09
............
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告