gpt4 book ai didi

java数组按引用传递不起作用?

转载 作者:IT老高 更新时间:2023-10-28 21:17:21 24 4
gpt4 key购买 nike

我认为几乎所有语言,包括 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;
}
}

最佳答案

数组是通过引用传递的,但是reference按值传递的。即你可以改变a所引用的数组,但不能改变a所引用的数组

关于java数组按引用传递不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2831879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com