gpt4 book ai didi

java - 运行时的 StackOverFlowError

转载 作者:行者123 更新时间:2023-11-29 10:08:37 25 4
gpt4 key购买 nike

当我运行这段代码时,我在运行时得到了一个StackOverFlowError。为什么我会收到此异常?

 class F{
String name;
int rollNo;
F ref;

F(String name,int rollNo){
this.name = name;
this.rollNo = rollNo;
ref = this;
}

public static void main(String[] args){
F f = new F("Shivam",138);
System.out.println(f);
}

public String toString(){
return name+" "+rollNo+" "+ref;
}
}

这是我得到的异常:

Exception in thread "main" java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:449)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at F.toString(F.java:20)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at F.toString(F.java:20)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at F.toString(F.java:20)
at java.lang.String.valueOf(String.java:2994)

最佳答案

System.out.println(f); // cause StackOverFlow  Exception

当这一行执行 f 对象调用的 toString() 方法时。和查看 toString()

的实现
public String toString(){
return name+" "+rollNo+" "+ref;
}

您再次连接 ref 对象,toString 方法无限递归调用。将 toString 的实现更改为此。

public String toString(){
return name+" "+rollNo;
}

关于java - 运行时的 StackOverFlowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com