簡體   English   中英

為什么要用其他方法修改原始數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM