0
我正在尝试解决这个实验问题 - >接受两个整数数组并返回合并数组
编写一个接受两个整数数组并返回合并数组的方法。使此方法可以在不创建类的对象的情况下在main方法中调用。
现在我的解决方案是此代码 - >
class Merge_array{
public static void main(String args[])
{
int c[];
int a[]={1,2,3,4,5,6};
int b[]={7,8,9,10,11};
c=merge(a,b);
for(int i=0;i<c.length;i++)
System.out.println(c[i]+" ");
}
static int[] merge(int a[],int b[])
{
int[] d=new int[a.length+b.length];
for(int i=0;i<d.length;i++)
{
if(i<a.length)
d[i]=a[i];
else
d[i]=b[i-a.length];
}
return d;
}}
我返回d []数组引用(返程d)作为我的输出这是在合并(局部变量)方法。我有困惑,这是否是正确的方式(尽管代码正在工作)。因为我正在返回超出范围的数组的引用,我也怀疑在合并调用执行后int d []的内存被java垃圾收集器销毁。
在main()完成之前,不会收集垃圾。当方法完成时,merge()(a','b','d','i')中的变量将超出范围,但它们引用的对象不会被清除,直到它们不再被引用任何地方。 – shmosel
由于数组d的引用已分配给c,因此它不会被垃圾收集。 – Jagroshan
@shmosel感谢您的帮助。是否有任何java文档说变量在被引用之前不会被收集到 – user3464093