请问谁能解释一下这代码的运行流程,答案是B,A,AB,感激不尽!

请问谁能解释一下这代码的运行流程,答案是B,A,AB,感激不尽!

问题描述:



```java
public static void main(String[] args){
      new A(new B());
  }
}
class A{
  public A(){
      System.out.println("A");
}
   public A(B b){
      this();
      System.out.println("AB");
  }
}
class B{
    public B(){
        System.out.println("B")
  }
}


new A(new B()),带参数先执行new B(),输出B,
然后先输出A的无参构造函数,输出A,
最后输出AB

先new B,调用B的默认构造函数,输出B
再new A(B b),但该构造函数调用了this(),会调用默认构造函数,输出A,然后再输出AB

new A(new B());

先new B(),new的同时会执行构造函数,所以打印B。
然后new A(b的对象),会调用A(B b)整个构造函数,这里面先this(),会调用A()构造函数,打印A,然后打印AB.
结果是B,A,AB

首先在最内层创建了B的对象,并输出了public B(),然后将创建出的对象作为参数传递给A,进行类A的实例化,输出A和AB