比较简单的问题..代码如下
class Chinese
{
    Chinese objRef=new Chinese();
   
}class TestChinese
{
    public static void main()
    {
    Chinese obj1=new Chinese();
    }
}
运行结果是无数行的at Chinese.<init><Lesson31.java.32>
这是为什么呢?

解决方案 »

  1.   

    你在Chinese里new Chinese,递归调用了构造方法,在Chinese objRef=new Chinese();前面加个static就好
      

  2.   

    Chinese objRef=new Chinese();
    挪出来
      

  3.   

    因为你在创建对象的时候  要初始化你的实例域也就是Chinese 的引用变量objRef  即创建一个chinese的对象
      创建对象的过程中实际上又开始初始化这个对象的objRef 参数  于是发生了无限的递归   加个static使得改变量成为静态变量 即类变量   在类编译的时候就开始为objref其分配空间以及初始化 而此时的Chinese对象已经没有objref变量了