我以为几乎所有编程语言,包括Java,都是将数组作为引用(可修改的)传递给函数。
但在此情况下却不起作用,testArray
仍然是1,2,3
,大小为3。
奇怪的是,当我将result[i] = 2
更改为a[1] =2
时,它就可以工作了。 它确实通过引用传递。
这段代码有什么问题?
最后,我使用了a = result
; (更新了a)。结果是否从栈中删除了?这就是为什么我仍然得到原始的a
吗?
我很困惑。
谢谢!
class Test
{
public static void main(String[] args)
{
int[] testArray = {1,2,3};
equalize(testArray, 6);
System.out.println("test Array size :" + testArray.length);
for(int i = 0; i < testArray.length; i++)
System.out.println(testArray[i]);
}
public static void equalize(int[] a, int biggerSize)
{
if(a.length > biggerSize)
throw new Error("Array size bigger than biggerSize");
int[] result = new int[biggerSize];
// System.arraycopy(a, 0, result, 0, a.length);
// int array default value should be 0
for(int i = 0; i < biggerSize; i++)
result[i] = 2;
a = result;
}
}