Java 陣列是 call by address?Python 是 call by reference?兩個常見誤解一次釐清
· 閱讀時間約 6 分鐘
Java 陣列是 call by address?Python 是 call by reference?兩個常見誤解一次釐清

剛開始教初學者時,我很常看到同一種答案反覆出現:
- Java 陣列傳進方法後可以改到內容,所以它是 call by address
- Python 的 list 傳進函式後也能改到外面的值,所以它是 call by reference
這兩句話都很像對的,因為從執行結果看起來,真的很像「我把東西交進去,裡面改了,外面也跟著變」。但也正因為「看起來很像」,但又似乎看過相異的解釋,深怕錯誤的解釋會影響學習效果。
這篇我從錯誤認知出發,借助 AI 詢問釐清自己的觀念,最後希望能回到官方真正的說法。
上述兩個說法都不夠精確

