◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
在 java 中,数组参数传递的是引用,允许方法访问和修改数组内容。此外,浅拷贝创建对同一数组对象的引用,而深拷贝创建一个新数组并复制原始数组的内容。
Java 数组如何传递地址
在 Java 中,数组本质上是对象,但它们也是引用类型。这意味着它们存储对实际数组内容的引用,而不是内容本身。当我们将一个数组参数传递给一个方法时,实际上是传递了该数组的引用。
传递引用
当我们将一个数组作为参数传递给一个方法时,方法会收到该数组的引用。这意味着该方法可以访问并修改数组的内容,但不能修改数组本身的长度或类型。
立即学习“Java免费学习笔记(深入)”;
public static void modifyArray(int[] arr) { arr[0] = 10; } public static void main(String[] args) { int[] arr = {1, 2, 3}; modifyArray(arr); System.out.println(Arrays.toString(arr)); // 输出:[10, 2, 3] }
浅拷贝和深拷贝
浅拷贝:当我们使用赋值运算符(=)将一个数组分配给另一个变量时,我们创建了该数组的浅拷贝。浅拷贝将两个变量指向同一数组对象。对其中一个数组所做的任何更改都会影响另一个数组。
int[] arr1 = {1, 2, 3}; int[] arr2 = arr1; // 浅拷贝 arr1[0] = 10; System.out.println(Arrays.toString(arr2)); // 输出:[10, 2, 3]
深拷贝:深拷贝创建一个新数组对象并复制原始数组的内容到该新数组中。两个数组是独立的,对其中一个数组所做的更改不会影响另一个数组。
int[] arr1 = {1, 2, 3}; int[] arr2 = Arrays.copyOf(arr1, arr1.length); // 深拷贝 arr1[0] = 10; System.out.println(Arrays.toString(arr2)); // 输出:[1, 2, 3]
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。