首页 >Java >java教程 >Java 数组:按值传递还是按引用传递?

Java 数组:按值传递还是按引用传递?

Susan Sarandon
Susan Sarandon原创
2024-12-29 08:03:14590浏览

Java Arrays: Pass by Value or Pass by Reference?

Java 数组:值传递还是引用传递?

Java 中的数组拥有特殊的地位,它既不是原始类型,也不是成熟的对象。这种独特的性质提出了一个问题:Java 数组是按值传递还是按引用传递?

Java 中的所有内容都是按值传递。 这包括数组。当您将数组传递给方法时,实际传递的是对该数组的引用,而不是数组本身。

因此,通过该引用对数组内容进行的任何修改都会影响原始数组。但是,更改引用以指向新数组不会影响原始方法中保存的引用。

考虑以下 Java 代码片段:

public class ArrayPassingDemo {

    public static void changeContent(int[] arr) {
        arr[0] = 10; // Changes the content of the array in main()
    }

    public static void changeRef(int[] arr) {
        arr = new int[2]; // Does 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 (since the reference change isn't reflected)
    }
}

在此示例中:

  • changeContent 修改数组的内容,这反映在 main() 中。
  • changeRef 尝试更改数组引用但失败,因为原始引用在 main() 中保持不受影响。

此行为强调 Java 中的数组是按值传递的,即使传递操作涉及它们的引用。

以上是Java 数组:按值传递还是按引用传递?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn