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