huki87 2014-04-17 02:14
浏览 807

java对象初始化的问题

java类中成员变量是自身对象的问题,可以知道如果这个成员变量是非static的,那么会出现stackOverflowError,即创建了一个A对象,A对象初始化时又会创建一个A对象,从而造成死循环,那么如果这个成员变量是static的,不会出现这个问题,但是运行结果我不是很懂,上代码:

public class Test {
public static void main(String[] args) {
Person p=new Person("a");
//Boy b=new Boy("b");

}

}
class Person{
private int id;
Person p=new Person("bb");
//static Boy b=new Boy("bb");
static {
System.out.println("静态代码块!");
}
{
System.out.println("非静态代码块!");
}
Person(String s){
System.out.println("构造器"+s);
}
}
运行结果为:
非静态代码块!
构造器bb
静态代码块!
非静态代码块!
构造器a
就是该static成员变量即Person对象初始化时没有执行static代码块,求解释啊,万分感谢!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能
    • ¥15 jmeter脚本回放有的是对的有的是错的