我想将一个数组分配给方法中的另一个数组。
public class Scratch01{
public static void main(String args[]){
double[] arr = {1};
System.out.println("Before assign the array: "+arr[0]);
add(arr);
System.out.println("After assign the array: "+arr[0]);
}
public static void add(double[] paraArr){
double[] a ={2};
paraArr = a;
}
}
/*
Since array is passed by reference, the parameter paraArr should also refer to arr.
But why in this case, the value of arr won't become {2}, and still remain {1}?
*/
我期望输出的是分配数组之前:1 分配数组后:2
但是实际输出是在分配数组之前:1 分配数组后:1
答案 0 :(得分:1)
由于数组是通过引用传递的。
错了。所有变量均按值传递。在您的情况下,arr
的值是对double数组的引用。
当您将arr
传递给add
方法时,将创建引用的副本。因此,这意味着您有2个引用(方法中的原始arr
和paraArr
)指向同一数组。然后,您重新分配了第二个参考,但是原始参考保持不变。
正如评论中提到的那样,如果您想更改传递的数组,则可以使用索引paraArr[0] = ...
的访问来为数组的项目分配特定的值