拿這個例子:可以返回一個本地初始化數組,如果沒有,我該怎麼做?
public class foo
{
public int[] func()
{
int arr[] = new int[3];
// here initialised the array
return arr;
}
}
我不與Java經歷過,但我知道一點的C/C++。
拿這個例子:可以返回一個本地初始化數組,如果沒有,我該怎麼做?
public class foo
{
public int[] func()
{
int arr[] = new int[3];
// here initialised the array
return arr;
}
}
我不與Java經歷過,但我知道一點的C/C++。
是的,這完全沒問題,因爲垃圾收集是在沒有進一步引用對象時完成的。您還可以使用length
內部(arr.length
)或外部(例如aFoo.func().length
)該方法查找陣列大小。
是的,應該沒問題。因爲Java數組不是分配在堆上。函數調用返回後,它們不會被收集。
在Java和C++中都可以。你會在稍後的某個時候高枕無憂地刪除[]它以避免內存泄漏;而在Java中,一旦沒有更多的數組引用,垃圾收集器就會做它的事情,所以你不必做任何事情。
可以返回本地數組,但必須在程序的其餘部分證實返回的數據,以便它繼續用於某個目的。
將數據關聯到新的東西。
它在C#世界中完全可以。
你也可以這樣做:return new int[] {1,2,3,4};
注意,如其他地方提到的,在C++調用者就必須知道要刪除的'new'ed陣列,儘管它同樣在堆上分配。 – 2010-09-19 06:50:21