作者: 贾成龙 时间: 2012-8-23 22:09
class Demo
{
Demo d ;//= new Demo();
public Demo()
{
System.out.println("demo run");
}
public static void main(String[] args)
{
new Demo();
}
}
或者:
class Demo
{
//Demo d = new Demo();
public Demo()
{
System.out.println("demo run");
}
public static void main(String[] args)
{
new Demo();
}
}
都可以,因为在创建对象,重复调用本身,创建对象有问题!作者: 夏天 时间: 2012-8-23 22:25
贾成龙 发表于 2012-8-23 22:09
class Demo
{
Demo d ;//= new Demo();
虽然是在重复调用,会造成堆栈溢出。
但我认为你的第一种方法没有意义。
第二种方法是对的,但是应该不是回答老师想问的内容。 作者: 黑马张涛 时间: 2012-8-23 22:33
class Demo
{
Demo d = new Demo();
Demo()
{
System.out.println("demo run");
}
public static void main(String[] args)
{
new Demo();
}
}
程序执行,从main方法执行,他会new一个Demo对象,而在产生Demo对象时,Demo对象第一句话又会生成Demo对象,所以会陷无入限递归的情况,不断创建新的Demo对象,直到程序提示堆栈溢出!
如果只是想生成一个Demo对象,去除Demo d = new Demo();这一句就行。作者: 贾成龙 时间: 2012-8-23 23:50