首頁 > 後端開發 > C++ > Java 是按引用還是按值傳遞參數?

Java 是按引用還是按值傳遞參數?

Mary-Kate Olsen
發布: 2024-12-30 14:45:16
原創
452 人瀏覽過

Does Java Pass Parameters by Reference or by Value?

在Java 中透過引用傳遞參數

在Java 中,每個參數都是按值傳遞的,這可能看起來違反直覺,特別是如果您來自C# 等支持引用傳遞的語言。但是,其語義在本質上略有不同。

Java 如何處理參考型別

對於引用型別的參數(例如物件),Java 確實會傳遞參考本身的價值。因此,它看起來是按引用傳遞,因為方法內的賦值會影響方法外部的參考。

但是,需要注意的是,傳遞的引用與方法中使用的引用不同。調用方法。

值傳遞證明

考慮以下內容範例:

Object o = "Hello";
mutate(o);
System.out.println(o);

private void mutate(Object o) { o = "Goodbye"; } //NOT THE SAME o!
登入後複製

此程式碼將「Hello」印到控制台,即使mutate()方法嘗試將o 引用修改為「Goodbye」。這表示傳遞給 mutate() 的引用與原始的 o 引用不同,支援按值傳遞語義。

真實引用傳遞的選項

要實現真正的按引用傳遞行為,可以使用以下方法:

AtomicReference<Object> ref = new AtomicReference<Object>("Hello");
mutate(ref);
System.out.println(ref.get()); //Goodbye!

private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
登入後複製

在這種情況下, AtomicReference 提供了物件的包裝器,它的參考真正是按值傳遞的。對 mutate() 內的引用進行賦值將影響方法外部的引用,從而產生所需的引用傳遞行為。

以上是Java 是按引用還是按值傳遞參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板