猿问

StackOverflowError 这个错误没有指向递归

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;

}


暴躁的代码
浏览 1415回答 3
3回答

按照自己的节奏前行

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

朕日理万机

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

习惯受伤

我觉得应该是你的调用代码有问题,把调用代码放上来。
随时随地看视频慕课网APP

相关分类

Java
我要回答