在 Java 中,經常討論「按值傳遞」和「按引用傳遞」的概念。本文旨在闡明數組是按值傳遞還是按引用傳遞。
與流行的看法相反,Java 中的陣列不被視為原始類型,也不是物件。因此,問題出現了:陣列在傳遞過程中是如何處理的?
答案是明確的:Java 中的一切都是按值傳遞。當數組作為參數傳遞給另一個方法時,實際傳遞的是對該數組的引用。這類似於按值傳遞物件參考的方式。
透過傳遞的引用對數組內容進行的任何修改都會隨後影響原始數組。但是,更改引用本身以指向不同的陣列不會對原始方法中的現有參考產生任何影響。
為了說明這個概念,請考慮以下範例:
public static void changeContent(int[] arr) { // If we change the content of arr. arr[0] = 10; // Will change the content of array in main() } public static void changeRef(int[] arr) { // If we change the reference arr = new int[2]; // Will not change the array in main() arr[0] = 15; } public static void main(String[] args) { int [] arr = new int[2]; arr[0] = 4; arr[1] = 5; changeContent(arr); System.out.println(arr[0]); // Will print 10.. changeRef(arr); System.out.println(arr[0]); // Will still print 10.. // Change the reference doesn't reflect change here.. }
在本例中,當arr被傳遞給changeContent時,arr的內容被修改(即arr[0]被賦值為10)。此變更會影響 main 中的原始 arr 變數。但是,當 arr 傳遞給changeRef 時,引用本身會透過為其指派一個新陣列而被修改。因此,此變更不會影響 main 中的原始 arr 變數。
以上是Java 陣列是按值傳遞還是按引用傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!