Home > Java > javaTutorial > Are Arrays Passed by Value or by Reference in Java?

Are Arrays Passed by Value or by Reference in Java?

Patricia Arquette
Release: 2025-01-01 05:01:09
Original
152 people have browsed it

Are Arrays Passed by Value or by Reference in Java?

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)
}
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template