【发布时间】:2011-02-19 09:16:31
【问题描述】:
我认为几乎所有语言,包括 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;
}
}
【问题讨论】:
-
请详细说明你的逻辑。你想扩大你的数组大小吗?目前您的结果数组不会从原始数组中复制任何值。
-
你见过stackoverflow.com/questions/40480/is-java-pass-by-reference>吗?
标签: java