[急]一个很简单的在类中初始化本类的问题 ...main...{ A a=new A();}class A{ A a=new A();}运行时抛出StackOverflowError异常。很显然这是因为类A无限次初始化的关系。我也明白这为什么要报错。但是,我们小组长一定要我找出这个会出错的理论依据。请各位前辈们指点一下OTL。有什么相关的贴子什么的参考。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道对不对啊,解释下:对于引用类型的初始化:classname cn=new classname(),在内存的执行过程如下,在内存的栈中创建一个引用cn,也就是保存指向在堆区创建的对象classname()的地址,楼主的这个写法极端,...main...{ A a=new A();}class A{ A a=new A();}在main()方法中,创建了变量a,在栈区保存指向堆区创建的对象A,new的执行过程如下:静态代码块非静态代码块默认初始化成员变量显式初始化成员变量构造方法,当初始化话成员变量a时,执行到显式初始化,又是new A(),那么这个执行就会无限循环下去,内存不溢出才怪... ...main...{ A a=new A();}class A{ static A a=new A();}这样就不会出错了。你小组长估计单例模式看漏了吧 鼠标绘图paint保存图象的问题 求助?sql列名无效 只运行一次的定时器怎么弄 一个简单问题,我都不好意思问 串口问题:运行例子SerialDemo但一个端口都找不到! 关于checkstyle的一些问题 有史以来最菜的问题:怎样用JDK调试JAVA程序? 急!急!急!急!急!急!急!关于ant一个属性怎么也解决不了,关于java编译的属性,在线等待!! JAVA初级问题 关于applet的打印问题,用administrator权限仍然无法打印。(内详) 请帮忙解决下从数据库读取数据并写入对象出现的异常问题 菜鸟求助,使用非数字子字符串分割一个字符串,怎么写正则表达式?
对于引用类型的初始化:classname cn=new classname(),在内存的执行过程如下,在内存的栈中创建一个引用cn,也就是保存指向在堆区创建的对象classname()的地址,楼主的这个写法极端,
...main...{
A a=new A();
}class A{
A a=new A();
}在main()方法中,创建了变量a,在栈区保存指向堆区创建的对象A,new的执行过程如下:
静态代码块
非静态代码块
默认初始化成员变量
显式初始化成员变量
构造方法,当初始化话成员变量a时,执行到显式初始化,又是new A(),那么这个执行就会无限循环下去,内存不溢出才怪...
A a=new A();
}class A{
static A a=new A();
}
这样就不会出错了。你小组长估计单例模式看漏了吧