Java 无法理解程序工作流程

Java 无法理解程序工作流程,java,constructor,Java,Constructor,有人能给我解释一下这个程序的输出吗? 我无法了解“名为10的构造函数”是如何打印出来的。 提前感谢。 main调用Test2的构造函数 在执行该构造函数的主体之前,初始化该类的所有实例变量 这包括test1t1=newtest1(10)执行带有参数10的Test1构造函数,并打印“constructor called 10” 然后才执行Test2构造函数的主体,其中包括t1=newtest1(i),它使用参数i(其值为5)执行Test1的构造函数,并打印“名为5的构造函数” main调用Tes

有人能给我解释一下这个程序的输出吗? 我无法了解“名为10的构造函数”是如何打印出来的。 提前感谢。

  • main调用
    Test2
    的构造函数
  • 在执行该构造函数的主体之前,初始化该类的所有实例变量
  • 这包括
    test1t1=newtest1(10)
    执行带有参数10的
    Test1
    构造函数,并打印“constructor called 10”
  • 然后才执行
    Test2
    构造函数的主体,其中包括
    t1=newtest1(i)
    ,它使用参数
    i
    (其值为5)执行
    Test1
    的构造函数,并打印“名为5的构造函数”
      • main调用
        Test2
        的构造函数
      • 在执行该构造函数的主体之前,初始化该类的所有实例变量
      • 这包括
        test1t1=newtest1(10)
        执行带有参数10的
        Test1
        构造函数,并打印“constructor called 10”
      • 然后才执行
        Test2
        构造函数的主体,其中包括
        t1=newtest1(i)
        ,它使用参数
        i
        (其值为5)执行
        Test1
        的构造函数,并打印“名为5的构造函数”

      在Test2类中,通过调用Test1的构造函数并传入值10,您已经创建了Test1的实例

      // filename: Test2.java
      class Test1 {   
          Test1(int x) {
              System.out.println("Constructor called " + x);
          }
      }
      
      // This class contains an instance of Test1 
      class Test2 {    
          Test1 t1 = new Test1(10);   
      
          Test2(int i) { t1 = new Test1(i); } 
      
          public static void main(String[] args) {    
               Test2 t2 = new Test2(5);
          }
      }
      
      Output:
      Constructor called 10
      Constructor called 5
      
      在它的构造函数中有一个print语句,它打印传递给构造函数的值

      Test1 t1 = new Test1(10);
      

      这就是输出的来源。

      在Test2类中,通过调用Test1的构造函数并传入值10,您已经创建了Test1的实例

      // filename: Test2.java
      class Test1 {   
          Test1(int x) {
              System.out.println("Constructor called " + x);
          }
      }
      
      // This class contains an instance of Test1 
      class Test2 {    
          Test1 t1 = new Test1(10);   
      
          Test2(int i) { t1 = new Test1(i); } 
      
          public static void main(String[] args) {    
               Test2 t2 = new Test2(5);
          }
      }
      
      Output:
      Constructor called 10
      Constructor called 5
      
      在它的构造函数中有一个print语句,它打印传递给构造函数的值

      Test1 t1 = new Test1(10);
      

      这就是您的输出的来源。

      我已经调试了该程序,但我不确定我是否遗漏了任何概念。就像在Test2的构造函数中点击t1一样,它移动到t1被分配Test1的对象引用的行:(.t1只是调用Test1构造函数的一个参考变量。如果我听起来很无聊,请原谅。我已经调试了该程序,但我不确定我是否遗漏了任何概念。就像在Test2构造函数中点击t1一样,它移动到t1被分配Test1的对象引用的行:(.t1只是调用Test1构造函数的一个参考变量。请原谅我听起来很无聊。啊!明白了。在执行构造函数之前,初始化了第一个实例变量。非常感谢:)啊!明白了。在执行构造函数之前,初始化了第一个实例变量。非常感谢:)