Passing Arrays in Java: Value vs. Reference
Unlike primitive types, arrays in Java aren't primitive nor objects. This raises the question: are they passed by value or by reference in Java?
Understanding Value and Reference Passing
In Java, everything is passed by value. This means that a copy of the actual value is stored in the receiving variable. For primitives, like integers or strings, this simply duplicates the value. However, for objects and arrays, it's a bit more complex.
Passing Arrays: Reference Only
While arrays aren't true objects, they are still treated as references. Therefore, when an array is passed to a method, only the reference to the array is actually passed, not the array itself. This implies that any changes made to the content of the array will be reflected in the original array.
Changing Array Content vs. Reference
Modifying the array within a method does affect the original array due to the reference being passed. However, changing the reference itself, such as assigning it to a new array, will not alter the reference in the original method. This is because the reference itself is a value that is passed by value.
Example
The following example illustrates this behavior:
public static void changeContent(int[] arr) { arr[0] = 10; // Modifies the array's content } public static void changeRef(int[] arr) { arr = new int[2]; // Changes the reference 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]); // Prints 10 (content changed) changeRef(arr); System.out.println(arr[0]); // Prints 10 (reference not changed) }
In this case, the changeContent() method modifies the array's content, affecting the original array. However, the changeRef() method alters the reference itself, which does not affect the original array.
The above is the detailed content of Are Arrays Passed by Value or by Reference in Java?. For more information, please follow other related articles on the PHP Chinese website!