java实例化造成死循环的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:22:40
代码如下:
class A{
public A(){
A a = new A();
}
}
当执行A test = new A();的时候,就会造成不断的new A的实例,是不是这种写法,不合逻辑,或者是JAVA对这类问题有特殊的处理。这会造成什么死循环或者别的什么情况么?(我只是突然有这一想法,并不是实际问题。)

这种写法编译器是不会抛错的。
但是在运行时候就会抛错:java.lang.StackOverflowError
一般运行一个程序,JVM会开辟一块内存空间去,当程序运行时需要空间一旦超过了分配的空间,就会抛出这个异常.比如死循环,递归次数过多,等等,你这里就是因为是个递归的程序无正常终止,所以你在创建对象的时候就会抛错。

不会出现任何问题的
这样的写法也很常见
只要不是循环语句,基本不会出现死循环一说

好像没有你那种写法吧,最好把具体些,
public A(){}这一般是为成员变量赋值的或初始化;
要嘛你用
public A(String d){
A a = new A();
a.XX(d);//XX由A的类型定
}
或者
public A(){
A a = new A();
super(a);
}
等;
要防死循环,用return/break/continue语句来控制就可以解决了

new A()是实力化,不是调用A()方法。不会死循环。可以调用a.A();

前些天自己编了个DOM中的getElementById()的方法,用的就是这种循环。

这个也不是很清楚