当我将数组作为参数传递给函数时,原始数组会更改,但数组不应该更改,对吧?如有错误请指正。
下面我将 int x=10 作为参数传递给change(int a) 函数。 原始 int x 的值已更改。
那么相同的代码如何以不同的方式影响数组和 int 呢?
public class Runy {
public static void main(String [] args)
{
Runy p = new Runy();
p.start();
}
void start()
{
long [] a1 = {3,4,5};
long [] a2 = fix(a1);
int x=10;
int y= change(x);
System.out.println(y);
System.out.println(x);
System.out.print(a1[0] + a1[1] + a1[2] + " ");
System.out.println(a2[0] + a2[1] + a2[2]);
}
long [] fix(long [] a3)
{
a3[1] = 7;
return a3;
}
int change(int a)
{
a=a+1;
return a;
}
}
最佳答案
你错了。您传入的不是数组 - 它是对数组的引用。数组是 Java 中的引用类型,因此 a1
的值(例如)不是数组对象 - 它是对数组对象的引用。
当您将该引用传递给 fix
时,参数 (a3
) 具有与 a1
相同的值...该值引用相同的数组,因此在方法返回后对该数组的修改是可见的。此时,a1
和 a2
将是相等的引用 - 它们都引用同一个数组。
关于java - 当我们将数组作为参数传递给其他函数时,数组的值会如何变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33139919/