30 Array Initialization

Merhaba Arkadaslar,
Onceki iki yazida array declaration ve array construction konularindan bahsetmistik. Bu yazida array initialization ve hem construction hem initialization islemini beraber yaptigimiz durumlari inceleyecegiz.

Array Initialization ‘ dan kasit dizinin icerisine “bir seyler” eklemek, doldurmaktir.  Bu “bir seyler” hem primitive degerler olacagi gibi , objeleri tutan referans degiskenleri de olabilir.

Animal [] pets = new Animal[3];

3 tane Animal referans tipinde ve null degerli elemanimiz ve Heap’te 1 tane array objemiz olustu. Burada Animal objesi yok ! Burasi onemli bir nokta.

pets[0]= new Animal();
pets[1]= new Animal();
pets[2]= new Animal();

Bu kod parcasinda 3 tane Animal objesi olusturuyoruz ve ilgili indekslere atama islemini gerceklestiriyoruz.

pets[3]= new Animal(); //ArrayIndexOutOfBoundsException

int[] x = new int [5];
x[5] =10; //ArrayIndexOutOfBoundsException

int[] z = new int [2];
int y=-3;
z[y]= 4; //ArrayIndexOutOfBoundsException

Yukaridaki ornekler calisma zamaninda (runtime) , ArrayIndexOutOfBoundsException hatasi verecektir. Dizi indekslerinin Java’da 0 dan basladigini ve negatif deger alamayacagini belirmekte fayda var.

Donguler ile ilk deger atama islemini  (Initialization)  gerceklestirebiliriz.
Array objeleri length adinda public bir degiskene sahiptir.  length degiskeni , array’in kactane eleman tuttugunu bize soyler bu elamanlarin initialize edilip edilmedigi bilgisini bize vermez.

int[] number = new int[5];

System.out.println(number.length);
for (int i = 0; i < number.length; i++) {
	number[i] = i * 2;
}
System.out.println(number.length);

Declare, construct ve initialize islemini tek statement(ifade) ile de yapabiliriz.

int [] ages = {10,15,20};

// ages adinda "int" tipinde bir array referans degiskeni tanimladik
//3 elemana sahip bir array olusturduk
//array'in elemanlarini 5,10,15 ile doldurduk
//Heap'te olusan array objesini ages degiskenine atadik.

int ages;
ages = {10,15,20}; //compile error

Benzer sekilde cok boyutlu diziler icin de gecerlidir ,

int[][] scores = { { 2, 4, 5 }, { 10, 20, 3, 9 }, { 4 }, {} };

Yukaridaki kod Heapte 5 tane obje olusturur. Bunlardan ilki ,scores degiskeninin tuttugu cokboyutlu dizinin objesidir. (array of int arrays) . Her bir { } yeni bir array’i temsil eder, her array bir obje oldugu icin dolayisiyla 4 adet objede burada olusur.

Bir diger yontem olarak anonymous array initialization(ilk deger atama) yapisi kullanilabilir ;

int [] ages2 ;
ages2 = new int[]{20,30,40,50};

anonymous array olustururken , dizi boyutu belirmek derleme hatasina yol acar.

int [] ages2 ;
ages2 = new int[4]{20,30,40,50};  //compile error

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*