在Java中,參數傳遞的方式是按值傳遞(pass-by-value)。當你傳遞一個對象給方法時,實際上是傳遞了一個指向該對象的引用(reference)的副本。這意味著,方法內部對這個引用的操作會影響到原始對象,但是如果你嘗試改變引用本身,這將不會影響到原始引用。
以下是一個簡單的例子來說明這個概念:
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.value = 10;
System.out.println("Before: " + obj.value); // 輸出:Before: 10
modifyObject(obj);
System.out.println("After: " + obj.value); // 輸出:After: 100
modifyReference(obj);
System.out.println("After: " + obj.value); // 輸出:After: 100
}
public static void modifyObject(MyClass inputObj) {
inputObj.value = 100; // 修改對象的屬性
}
public static void modifyReference(MyClass inputObj) {
inputObj = new MyClass(); // 創建一個新的對象,并試圖改變輸入參數的引用
inputObj.value = 200;
}
}
class MyClass {
int value;
}
在這個例子中,modifyObject
方法接收一個MyClass
對象作為參數,并修改其屬性。由于傳遞的是引用的副本,所以原始對象的屬性值會被改變。
然而,在modifyReference
方法中,我們試圖改變輸入參數的引用本身,但這并不會影響到原始引用。因此,原始對象的屬性值保持不變。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。