public class DeadLooper {
public static void main(String[] args) {
System.out.println(new D());
}
}
class D{
@Override
public String toString() {
return "abc"+this;
}
}
这时候,toString方法中会默认调用自己的toString方法,形成无限循环会变成死循环。
public class DeadLooper {
public static void main(String[] args) {
System.out.println(new D());
}
}
class D{
@Override
public String toString() {
return "abc"+new E();
}
}
class E{
@Override
public String toString() {
return "def";
}
}
结果为:abcdef
结论:System.out.println(对象),这时候会调用对象的toString方法;在对象的toString方法里面,return “字符串”+对象,会调用对象的toString方法。