我有一個返回1D數組的方法。我想在一個循環中調用該方法並將結果存儲在二維數組中。當使用foreach循環時它不起作用,數組結果充滿了空指針。爲什麼我不能使用foreach循環將一維數組分配給二維數組?
//this doesn't work
...
double[][] results = new double[20][];
for(double[] result : results){
result = method();
}
...
public double[] method(){
double[] ret = new double[15];
//populate ret and do other stuff...
return ret;
}
但是,當使用常規「for」循環迭代數組時,它會奇蹟般地工作!
...
double[][] results = new double[20][];
for(int i=0;i<20;i++){
results[i]=method();
}
...
public double[] method(){
double[] ret = new double[15];
//populate ret and do other stuff...
return ret;
}
爲什麼?
那麼可以肯定地說,使用foreach循環創建額外的開銷通過創建每個元素的引用副本? – Leprechaun
@Leprechaun我不會說4或8 KB或更少的內存是額外的開銷...更多信息:[在java中的引用類型大小](http://stackoverflow.com/q/5350950/1065197) –