Merhaba Arkadaslar,
Bir onceki yazida Array Declaration konusunu incelemistik. Bu yazida Array Construction konusunu inceleyecegiz.
“Array Construction” ifadesinden kasit , bir array/dizi objesini Heap’te yaratmak/olusturmak/create anlamina gelmektedir. Bir array/dizi objesi yaratilmadan once Java, Heap’te bu obje icin ne kadar yer ayrilmasi gerektigini (allocate) bilmelidir. Bu nedenle dizinin boyutu, olusturulma zamaninda(creation time) belirli olmalidir.
Construction One-Dimensional Array ( Tek Boyutlu Dizi Olusturma)
Yeni bir dizi olusturmak icin new anahtar kelimesini kullaniriz.
int[] testScores; //declare bildiri/tanitim islemi testScores = new int[4]; //construct array / dizi olusturma ya da int [] testScores = new int[4];
Bu basit dizi olusturma islemini hemen hemen herkes bilmektedir. Bu kodlarin anlamini biraz daha detaylica inceleyecek olursak ; Heap’te yeni bir dizi objesi olusturulur ve bu dizi objesi 4 tane elaman tutmaktadir. Onceki yazilarda inceledigimiz gibi bu elemanlar icin varsayilan deger 0 olacaktir. Hatirlayacagimiz gibi tum diziler objedir. Bu nedenle referans tipindeki testScores degiskeni Heap’teki bu objeyi gostermektedir.(refer)
Yukarida belirttigim gibi, JVM , Heap’te yeterli/uygun alani ayirmak(allocate) icin dizinin boyutunu olusturulma zamaninda bilmelidir. Bu nedenle asagidaki kod derleme hatasi verecektir.
int[] testScores = new int []; //compile error /derleme hatasi
Constructing Multidimensional Array ( Cok Boyutlu Dizi Olusturma)
Cok Boyutlu diziler , dizilerin dizisidir. (arrays of array) . Ne demek istedik dikkatlice inceleyelim;
int [][] myArray = new int[3][]; myArray[0] = new int[2]; myArray[0][0] = 6; myArray[0][1] = 7; myArray[1] = new int[3]; myArray[1][0] = 9; myArray[1][1] = 8; myArray[1][2] = 5;
Cok boyutlu diziler de objedir. myArray referans degiskeni Heap’te 2 boyutlu bir dizi objesine referansta bulunmaktadir/tutmaktadir. (2-D int [] [] array object). Burada dikkat ederseniz [3][] ifadesinde sadece ilk koseli parantezde sayi belirttik bu gecerlidir cunku JVM’in myArray referans degiskeninin boyutunu bilmesi yeterli olacaktir.
myArray[0] = new int[2];
ifadesi ile yeni bir tek boyutlu dizi objesi olusturuyoruz. (int [] array object)
myArray[0][0] = 6; myArray[0][1] = 7;
Olusturdugumuz bu diziye deger atamasinda bulunuyoruz, deger atamasinda bulunmasaydik int tipinde bir dizinin elemanlari varsayilan olarak 0 olacaktir. Ayni islemi diger tek boyutlu dizi icin de yapiyoruz ;
myArray[1] = new int[3]; myArray[1][0] = 9; myArray[1][1] = 8; myArray[1][2] = 5;
2Boyutlu, myArray dizimiz icin 3.elamani (myArray[2]) herhangi bir diziye referansta bulunmadigi icin bu elemanin degeri, varsayilan deger olarak null olacaktir. Bunun nedeni myArray 2 boyutlu bir dizi referans degiskenidir ve her elemani bir int tipinde diziye referansta bulunur. Her dizi bir obje oldugu icin,myArray icin varsayilan deger olarak 0 degil null olacaktir.