写了一个小测试,当new下面的类时就报堆栈益处的误错
class dd{
 dd cv = new dd();//如果前面不加static时就会报堆栈益处的错误,加了就没有问题,请问为什么会这样?
dd(){
System.out.println("dfff");
}
}
dd f = new dd();

解决方案 »

  1.   

    在不加static的时候,
    dd cv  是 类的成员变量,在实例化这个类的一个对象的时候,
    要先实例化类的成员变量,则执行了dd cv = new dd();,就又去实例化类的对象了,
    一直这样下去,无限的实例化这个类的对象,知道内存耗尽。而你加了static的话,
    则表明dd cv是属于类的,在类被加载的时候,也就是你第一次new dd()的时候,
    static的成员变量dd cv 被加载,执行了dd cv = new dd();,
    这个时候的new dd()是不会再去加载 dd cv 的,因为cv是属于类的,是静态成员变量,只在第一次时候加载。
    所以就没有问题啦。
      

  2.   

    没机会回答了。都回答的很明白来了。
    java基础很重要。虽然东西不是很多。学习过程中一定要弄明白。