java数组通过引用不起作用?
这个问题在这里已经有了答案:
该数组通过引用传递,但引用是按值传递的。 也就是说,你可以改变阵列a
指,但你不能改变其阵列a
指。
Java是通过价值传递的。 这就是为什么你的代码不起作用。 一个好的做法是将int[] a
标记为final
,这样会导致编译错误(请参阅相应的Checkstyle规则)。
从函数返回参数“a”并将其分配给主函数中的testArray。 当您通过引用传递对象时,引用将被复制并提供给该函数。 所以这个对象现在被2个引用引用。 对象通过第二个引用进行的任何更改都将反映在第一个引用中,因为它们是由它们引用的同一个对象。 但是,当您更改参考(不是通过参考对象)时,这是一个不同的情况。 您已将第二个引用更改为指向另一个对象(int []结果)。 因此,通过第二个参考的任何更改都只会改变“结果”对象。
class Test
{
public static void main(String[] args)
{
int[] testArray = {1,2,3};
testArray = 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 int[] 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;
return a;
}
}
链接地址: http://www.djcxy.com/p/86683.html
上一篇: java array pass by reference does not work?
下一篇: Are arrays passed by value or passed by reference in Java?