A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑世光 中级黑马   /  2013-3-12 11:27  /  1026 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑世光 于 2013-3-12 12:10 编辑

public class Test {

        public static void main(String[] args) {
                Person p=new Person();

        }

}
class Person
{
        Person p=new Person();
}

点评

又学了一种死循环,不错  发表于 2013-3-12 12:15

评分

参与人数 2技术分 +1 黑马币 +12 收起 理由
黄玉昆 + 12
scott0610 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 王亚飞 于 2013-3-12 11:53 编辑
  1. 我知道了,!!!是不是反复执行构造方法,然后造成了溢出?



  2. class Person
  3. {
  4.         Person p=new Person();
  5. }
  6. 问题出在这里,你person类中写这个Person p = new Person();
  7. 这个是 不是行的,在本类中怎么能建立自己的对象呢,没明白你在Person类中写这个有什么目的,建立Person类的对象在main函数中建立就好了,给你个小例子,应该就会明白了
  8. public class Test {

  9.         public static void main(String[] args) {
  10.                 Person p=new Person();
  11.                 p.setAge(20);
  12.         }

  13. }
  14. class Person
  15. {
  16.         private int age ;
  17.         public void setAge(int a)
  18.         {
  19.                 if(a>=0&&a<=130)
  20.                 {
  21.                         age = a;
  22.                         speak();
  23.                 }
  24.                 else
  25.                         System.out.println("非法年龄");
  26.                
  27.         }
  28.         public int getAge()
  29.         {
  30.                 return age;
  31.         }
  32.         void speak()
  33.         {
  34.                 System.out.println("age = "+age);
  35. }
  36. }
复制代码
回复 使用道具 举报
你在main方法里面 new 了一个 Person对象,调用的是Person的默认无参构造方法,
然后Person类里面又在new它自己。。
然后就。。。又在new 它自己。。
然后。。。
再然后。。
就一直new 下去了 。。
直到。。栈溢出。。就挂了
Exception in thread "main" java.lang.StackOverflowError
额。算是死循环吧。。{:soso_e113:}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
为什么内存溢出,
这是因为你的代码类似于死循环,不断的在创建Person对象。
你在Person类中又在创建自己的对象Person p=new Person();
依次创建下去,就成了死循环,在堆内存中不断的创建对象,
这个肯定就会报内存异常噻!

希望对你有所帮助!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
死循环创建对象,栈内存消耗完了
就像一个碗,你本来是想倒一点水的,但是你的动作却是一直倒
所以,水就溢出来了嘛

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马