首頁 > Java > java教程 > Java 是按值還是按引用傳遞物件?

Java 是按值還是按引用傳遞物件?

DDD
發布: 2024-11-16 16:17:02
原創
418 人瀏覽過

Does Java Pass Objects by Value or by Reference?

Java 的「按值傳遞」與「按引用傳遞」區別

在Java 中,變數儲存對物件的引用,而不是對象本身他們自己。這種差異會影響物​​件作為參數傳遞給方法的方式。

場景A:傳遞引用

考慮以下程式碼片段:

Foo myFoo;
myFoo = createFoo();

public Foo createFoo() {
   Foo foo = new Foo();
   return foo;
}
登入後複製

當myFoo被指派createFoo()的結果時,一個新的Foo物件被創建並分配給foo。引用變數 myFoo 現在指向這個新物件。如果隨後修改 myFoo,則變更將影響原始 Foo 物件。但是,如果將新的引用變數指派給 myFoo,它將指向不同的物件。

場景B:傳遞值

將此與以下內容進行對比:

Foo myFoo;
createFoo(myFoo);

public void createFoo(Foo foo) {
   Foo f = new Foo();
   foo = f;
}
登入後複製

在這種情況下,方法createFoo()接收對myFoo 的引用。然而,在該方法中,建立了一個新的 Foo 物件並將其指派給本地引用變數 f。 foo = f 行僅更改方法內的引用,而不更改儲存在呼叫方法中的引用。因此,方法中對 foo 所做的任何修改都不會反映在原始 Foo 物件中。

結論

根據這些範例,很明顯 Java 總是透過按值而不是按引用進行參數。傳遞的值是對物件的引用,而不是物件本身。因此,對方法內的引用變數所做的變更不會影響原始物件。但是,透過引用對物件本身所做的更改將反映在原始物件中。

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

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