赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

初始化引发的"StackOverflowError" 异常

发布时间:2008.01.25 07:36     来源:赛迪网    作者:newjay

读者先来看看下面两段代码执行结果有什么不同?
片段一:

public Test() {
        System.out.println("start");
        System.out.println((new Integer(10)).toString());
        Test t = new Test();  //第5行
        System.out.println("end");
        excute("Why I am right ?");  //第7行
    }
    
    public void excute(String msg) {
        System.out.println(msg);
    }

    public static void main(String[] args) {
        new Test();
    }
}

片段二: 将第5行, 即 "Test t = new Test();" 注释掉.

运行结果:
片段一的结果为:

start
10
start
10
...
Exception in thread "main" java.lang.StackOverflowError


片段二的结果为:
start
10
end
Why I am right ?


为什么呢?
因为对象的创建入口是 构造函数,  构造函数会递规地"初始化"构造函数中声明的对象, 所以出现了其递规地调用自己的情况,, 直到耗尽stack.

细心的读者可能注意到第7行能真确地执行, 为什么呢, 留给读者思考了...希望这篇文章能给初学者有所帮助. 
         (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 开发框架:Spring XML配置十二个最佳实践 (01-24) · 中间件:Tomcat5.0-5.5连接池配置指南 (01-24)
· 第三方类库--I/O包中的 Decorator模式 (01-24) · J2EE综合--选择应用服务器的七个标准 (01-24)
· Java 理论和实践:用软引用阻止内存泄漏 (01-24) · 数据库相关--关于数据库恢复技术技巧 (01-24)
· J2SE综合--怎样取得class文件的路径 (01-24) · 程序人生:程序员不是神 心态决定一切 (01-24)
· JSP/Servlet:EasyJWeb中文件上传的处理 (01-24) · JAVA中关于Oracle的索引 (01-24)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 网银交易收费 我国银行业如何达国际化标准
· 家庭信息化普及率提高 网上缴费成为新时尚
· 五条黄金准则能够让CIO巧妙加薪 CIO焦虑调查
· 网上书店解决方案 深圳边检指挥中心ITSM项目
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统