首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 構造器調用順序解析:new 對象先執行構造方法再執行後續語句

     編輯:程式設計綜合問答

代碼輸出順序「3號 → 1號 → 2號」讓新手困惑。核心規則:**new A1(s1,s2) 會立即調用構造方法,構造方法內的打印先於 main 方法後續語句執行**。

執行流程圖解

main() 執行到:
A1 s = new A1(s1, s2);   // 1. 分配內存
                         // 2. 調用構造方法 A1(String, String)
                         //    ├─ 參數賦值給字段 s1, s2
                         //    ├─ 修改局部參數 str1, str2 (不影響外部)
                         //    └─ 打印 "3號 No pain, no gain!"
                         // 3. 構造完成,返回引用賦給 s
System.out.println("1號" + s1 + s2);  // 4. 繼續執行
System.out.println("2號" + s.toString()); // 5. 調用 toString()

關鍵知識點

  • 構造方法執行時機:new 表達式求值過程中,在賦值給變量之前完成。
  • 參數傳遞:Java 值傳遞,構造方法修改 str1/str2 只影響局部副本,外部 s1/s2 引用不變。
  • toString() 多態:s.toString() 調用 A1 重寫的方法,返回字段拼接 s1+s2。

內存圖示

棧: main棧桢
  s1 ──────► 堆: "Hello!" (String對象)
  s2 ──────► 堆: "I love JAVA."
  s  ──────► 堆: A1對象
                s1 ───► "Hello!"
                s2 ───► "I love JAVA."

理解「構造器在 new 表達式中同步執行」,輸出順序不再神秘。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved