为了账号安全,请及时绑定邮箱和手机立即绑定

StackOverflowError 这个错误没有指向递归

StackOverflowError 这个错误没有指向递归

暴躁的代码 2017-02-10 22:02:49
public class User { private String id;//ID private String password;//密码 public String name;//用户的昵称 public static int i = 2;//记录用户注册次数 public Book book;//用户借走的书 private User[] user = { new User("admin1","z1234567","小飞侠"),//第二处错误 new User("admin2","x1234567","程序猿"), }; //创建用户使用的构造函数 public User(String id,String password,String name){//第一处错误 i++;//用户数量加1 this.id=id; this.password = password; this.name = name; }
查看完整描述

3 回答

已采纳
?
按照自己的节奏前行

TA贡献90条经验 获得超70个赞

//解答一下,顺便回顾知识
class User{
    //其实你那个写法就是这个意思
    public User u = new User();//走到这里,看了一下User类初始化完成了没,一看没有呢,哦那我去初始化User
                                 //于是又来了一次...一直这样下去
    
    public User(){
    
    }
    
    public static void main(String[] args){
        User u = new User();//你要知道,当你创建一个实例的时候,先依次会初始化字段,然后调用
                                   //构造方法,当你这个对象创建的时候
    }

}


查看完整回答
2 反对 回复 2017-02-11
?
朕日理万机

TA贡献27条经验 获得超28个赞

因为你的User里面有个成员是User数组,而且里面的成员指定了要在构造时默认生成,于是你开始调用构造函数,构造函数就要把这两个user[0]和user[1]也构造出来,相应地调用user[0]的构造函数,然后同理调用user[0].user[0]的构造函数,不断这么调用下去,直到内存耗尽,报出栈溢出错误。

查看完整回答
反对 回复 2017-02-10
?
习惯受伤

TA贡献885条经验 获得超1144个赞

我觉得应该是你的调用代码有问题,把调用代码放上来。

查看完整回答
反对 回复 2017-02-10
  • 3 回答
  • 0 关注
  • 1372 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信