toString 方法如何在不迭代循环的情况下显示整个对象列表?

How does the toString method display an entire list of objects without iterating a loop?

嗯,我现在开始研究Java,出现了下面的问题,如果我有一个对象列表,我重写toString方法,因为java可以显示所有列表中对象的值,无需使用某种 for ?

进行迭代
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
         List<AB> p = new ArrayList<>();
         p.add(new AB("tst1", 25));
         p.add(new AB("tst2", 22));
         System.out.println(p);    
    }
}

public class AB {
                
      String name;
      int age;

      public AB(String name, int age) {
          this.name = name;
          this.age = age;
      }

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

所以我的问题是我实际上并没有单步执行对象,因为所有对象值都是使用 toString 显示的?

ArrayListAbstractList 延伸,从 AbstractCollection 延伸,覆盖 toString 方法(在 Object 中定义)

然后遍历元素列表,调用它们的 toString 方法,最终生成 String

public String toString() {
    Iterator<E> it = iterator();
    if (! it.hasNext())
        return "[]";

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        E e = it.next();
        sb.append(e == this ? "(this Collection)" : e);
        if (! it.hasNext())
            return sb.append(']').toString();
        sb.append(',').append(' ');
    }
}