![](/img/trans.png)
[英]Why is my original array not getting modified when it is used as a method parameter?
[英]Why is original array modified from another method?
我有這兩種方法,當我運行問題8時,它會打印出“ 1 3”,但我不明白為什么。 doSomething方法不應該不影響question8方法中的“ arr”數組,並因此打印出“ 2 4”
private static void question8() {
int[] arr = {1,2,3,4};
doSomething(arr);
System.out.print(arr[1] + " ");
System.out.print(arr[3]);
}
private static void doSomething(int[] list) {
int[] b = list;
for (int i = 0; i < b.length; i++) {
b[i] = i;
}
}
Array是一個Object
,引用變量按值傳遞。 訪問同一對象。 在您的代碼中
private static void doSomething(int[] list) {
int[] b = list; // this means list and b are referring to the same array that was being referenced by list reference variable
for (int i = 0; i < b.length; i++) {
b[i] = i;
}
}
這是怎么回事
question8()
方法中創建數組。 question8()
doSomething()
方法 doSomething()
方法,該方法由question8()
方法中的arr
變量引用。 int[] b = list
,這意味着變量b
引用了由變量list
引用的數組對象。 同樣,數組對象是相同的。 為了正確地理解這一點,您可以閱讀有關Java中帶有基元和引用變量的按值傳遞的信息 。 參考變量部分對您很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.