dizisindeki nesneleri başlatamıyor. Soruna hızlı bir şekilde daldım. Erişmeye çalıştığınızdadizesi
buffer = new Vector[8];
for(Vector v: buffer)
v = new Vector();
ama: Ben basit bir sınıf
class Vector{
float x, y;
}
varsa ve başka sınıf Ben böyle başlatmak
Vector[] buffer;
onun üyesi olarak bu nesnelerin dizisi vardır Bu nesnenin bu dizideki üyeleri bir NullPointerException'ı doğrudan yığın izlemem olsun. Yani, dizi nesneleri oluşturulmamıştır. Öte yandan bu daha geleneksel kod sadece mükemmel çalışır: tartışma it işaret
buffer = new Vector[8];
for(int i = 0; i<8; i++)
buffer[i] = new Vector;
this gibi, her iki derleme sonra aynı olmalıdır.
Sorunun nedeni, her bir döngü için neden öğe dizisinden nesneleri başlatılamıyor/oluşturmuyor?
Eğer 8 döngü yerine for döngüsünüzde buffer.length kullanırsanız, dizininizin boyutuna her zaman doğru olur. Aksi halde, bir 8'i değiştirirseniz ve diğerini değiştirmezseniz, son öğeleri kaçırırsınız veya bir dizi istisna dışında bir dizi alırsınız. – n00begon
Sadece örnek uğruna oldu. Aslında loop.length için bir değişkene döngüden önce atanması ve koşul için kullanılması performans açısından biraz daha iyi - neredeyse göz ardı edilemez- ve benim sözleşmemdir. – mehmetminanc
Tam olarak bu optimizasyon hakkında bir soru bile var http://stackoverflow.com/questions/1208320/what-is-the-cost-of-calling-array-length – n00begon