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

Java 參數傳遞機制:只有「值傳遞」,但值可能是引用

     編輯:程式設計綜合問答

結論

Java **只有值傳遞**。

  • 基本型別:傳遞數值副本。
  • 物件型別:傳遞**引用的副本**(即記憶體地址副本)。

行為差異

操作基本型別物件型別
在方法內修改參數變數本身(重新指向)不影響外部不影響外部(只是改變區域變數指向)
在方法內修改物件內部狀態(呼叫 setter、改欄位)不適用**影響外部原物件**(因為引用副本指向同一堆積物件)

對比 C++ / C#

  • C++:可用參考型別 T& 實現真正引用傳遞,允許在函式內讓實參指向新物件。
  • C#:ref/out 關鍵字可達到同樣效果。
  • Java:無此機制,若需「換掉原物件」,只能回傳新物件或包裝在可變容器(如陣列、Holder 類)中。

記憶口訣

「Java 傳遞的是**遙控器複製品**,按鈕操作(呼叫方法)影響同一台電視(物件),但換遙控器(重新指向)不影響原遙控器。」

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