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();//你要知道,当你创建一个实例的时候,先依次会初始化字段,然后调用 //构造方法,当你这个对象创建的时候 } }
朕日理万机
TA贡献27条经验 获得超28个赞
因为你的User里面有个成员是User数组,而且里面的成员指定了要在构造时默认生成,于是你开始调用构造函数,构造函数就要把这两个user[0]和user[1]也构造出来,相应地调用user[0]的构造函数,然后同理调用user[0].user[0]的构造函数,不断这么调用下去,直到内存耗尽,报出栈溢出错误。
添加回答
举报
0/150
提交
取消