既然java只传递值而不传递引用,为什么当我们将数组传递给方法时,它内部的变化也会反映在main中

问题描述 投票:0回答:1

当数组传递给方法时,该方法接收什么?

我遇到了这个问题,我认为答案必须按值传递,就像将副本传递给方法一样,并且每当我们更改方法内的数组时,数组都不会更改。

请参阅此链接的第 9 个问题 https://www.interviewbit.com/java-mcq/

我并没有尝试自己编码和查看。

java arrays pass-by-reference pass-by-value
1个回答
0
投票

在Java中,所有参数都是按值传递的,包括数组。这意味着当您将数组传递给方法时,您实际上传递的是对该数组的引用的副本,而不是数组本身。这种区别对于理解方法内对数组的修改如何影响原始数组至关重要。

public class ArrayExample {
    public static void modifyArray(int[] arr) {
        arr[0] = 10; // Modifies the first element of the array
    }

    public static void main(String[] args) {
        int[] myArray = {1, 2, 3};
        modifyArray(myArray);
        System.out.println(myArray[0]); // Outputs: 10
    }
}

在此示例中,

modifyArray
方法更改
myArray
的第一个元素。由于该方法收到了对
myArray
的引用的副本,因此更改会反映在原始数组中。
总之,虽然Java是严格按值传递的,但在处理对象(包括数组)时,传递的值是引用的副本。这允许对对象状态(数组元素)的修改反映在方法之外,从而导致 Java 使用引用传递的常见误解。

© www.soinside.com 2019 - 2024. All rights reserved.