java 不引用复制数组,java数组通过引用传递不起作用?

作者探讨了一个Java代码片段,为何在`equalize`函数中数组传递并未按预期修改。通过深入分析,问题可能在于数组复制或初始化的方式。讨论了`result=a`语句对原始数组的影响及可能的内存行为。
摘要由CSDN通过智能技术生成

我认为几乎所有语言(包括Java)都将数组传递给函数作为引用(可修改)。

但由于某种原因,它在这里不起作用,并且大小testArray仍为1,2,33。

奇怪的是,如果我更改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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值