top of page

Java Ders Notlarım – 4

Bu yazımda java programlama dilinde Dizilerin (Array) kullanımı, String tanımlamalarını ve Dizilerin for-each döngüsü ile kullanımına değindim. İyi kodlamalar 🙂

Diziler

java programlama dilinde aynı türden(homojen) verileri bir yerde tutmak için kullanılır. Örneğin 5 tane int türünde değişkenim varsa bunların hepsi için ayrı bir isimde ve ayrı ayrı değişken tanımlamak yerine 1 tane int türünde dizi tanımlayıp bu 5 verinin değerini de buradan erişebiliriz.

Java da bir diziyi tanımlarken genel olarak kullandığımız kalıplar şu şekildedir:

dizinintipi[] dizininadi = new dizinintipi[dizininelemansayisi];
 

veya

dizinintipi[] dizininadi;
dizininadi = new dizinintipi[dizininelemansayisi];
 

Örnek olarak,

int[] veriler = new int[5];
 

Java da bir diziyi  tanımlarken eleman sayısı bölümüne sayısal bir değişkeni veya aritmetik bir işlemi yazabiliriz.Örneğin,

int sayi = 7;
int[] veriler = new int[sayi];
 

veya

int sayi = 7;
int[] veriler = new int[sayi + 2];
 

Ayrıca bir diziyi tanımlarken aynı zamanda değerleri ile beraber tanımlama yapabiliriz.Örneğin,

int[] veriler = { 1 , 5 , 9};
 

Yukarıdaki tanımlama ifadesi ile şu tanımlama ifadesi aynı anlamdadır,

int[] veriler = new int[3];
veriler[0] = 1;
veriler[1] = 5;
veriler[2] = 9;
 

Dizileri tanımladık ama bu dizinin elemanlarına nasıl erişeceğiz veya bu dizideki bir elemanın değerini nasıl değiştireceğiz derseniz buyrun,

int[] veriler = new int[5];
//dizinin ilk elemanı 0 ile başladığı için ilk elemana aşağıdaki gibi ulaşırız.
veriler[0]
//mesela bu veriyi konsol ekranına yazdırmak için,
System.out.println( veriler[0] );
//yukarıda tanımladığımız dizinin son elemanına ise 4 yazarak ulaşabiliriz.Örneğin,
System.out.println( veriler[4] );
//bu elemanın değerini değiştirmek için yine = atama operatörünü kullanırız.Yani,
veriler[0] = 10;
 

Dizilerin kaç elemanlı olduğunu öğrenmek için length parametresi kullanılır. Örneğin,

int[] veriler = new int[7];
//dizinin eleman sayısına şu şekilde erişebiliriz.
veriler.length
//dizinin eleman sayısını konsol ekranına yazdırmak istersek
System.out.println( veriler.length );
 

Bir char dizisini hepsini konsol ekranına yazdırmak istediğimizde şu şekilde yapabiliriz,

char[] karakterler= { 'F' ,  'u' , 'r' , 'k' , 'a' , 'n' };
System.out.println( karakterler );
 

Çıktısı şu şekildedir:

Furkan 

String veri tipi

String veri tipini tanımlarken ben genelde şu ifadeyi kullanırdım. String, char türündeki verilerin bir araya gelmesiyle oluşur. Yani String bir char dizisidir. Ama bu tanımlama biçimi malesef ki dizi tanımlamasında uygun değil. Yani biz bir Char dizisini String değişkenine değer olarak atama yapamayız. Yani aşağıdaki tanımlama biçimi geçersizdir,

char[] karakterler= { 'F' ,  'u' , 'r' , 'k' , 'a' , 'n' };
String yazi = karakterler; // İllegal kullanımdır. Geçersizdir.
 

ama String değişkeni oluştururken new anahtarı ile String’i tanımlarken char dizisini kullanabiliriz. Yani,

char[] karakterler= { 'F' ,  'u' , 'r' , 'k' , 'a' , 'n' };
String yazi = new String( karakterler );
 

Çıktısı şu şekildedir:

Furkan 

String veri tipini tanımlarken new anahtarı ile yapıcı methodu çağırarak çift tırnak arasına yazdığımız ifadeyle tanımlayabiliriz. Örneğin,

String yazi = new String( "Furkan" );
 

Çıktısı şu şekildedir:

Furkan 

veya String tanımlaması yaparken char dizini kullanmak istiyoruzdur ama bu char dizisinin hepsini değilde sadece başlangıc ve bitişi belirli olan bir kısmını String e değer olarak verebiliriz.Kullanımı şu şekildedir,

String yazi = new String( karakterdizisininadi , baslangicnumarasi, bitisnumarasi);
 

Örneğin,

char[] karakterler= { 'F' ,  'u' , 'r' , 'k' , 'a' , 'n' };
String yazi = new String( karakterler , 3 , 5);
 

Çıktısı şu şekildedir:

ka 

Çıktıya Dikkat edin bitis numarası olarak girdiğimiz karakter Stringe dahil edilmez.

Dizilerin for-each döngüsü ile kullanımı

for ( dizinintipi elemanismi : dizininadi)
{
        elemanismi = elemanindegeri;
}
 

Bu kısımdaki dizinintipi, döngüde kullanacağımızı dizi elemanının türünü belirtir. Yani biz int türünde bir dizi kullanıyorsak dizinintipi kısmında da int yazmamız sağlıklı olacaktır. Aynı şekilde elemanismi, döngü her dönüşünde döngünün o anki sırasına karşılık gelen dizi elemanını temsil eder. Yani döngü ilk dönüşünde elmanismi dediğimiz şey bizde dizininadi parametresi ile belirttiğimiz dizinin ilk elemanını (dizininadi[0]) döndürür. Örneğin,

int[] sayilar = {3,4,7,5};
for ( int sayi : sayilar)
{
       sayi = 5;
}
 

Bu döngü dizinin her elemanının değerini = ifadesi ile 5 yapacaktır.

Önemli Bilgiler

Dizilerde tıpkı diğer değişken tipleri gibi methodlarda argüman ve parametre olarak alınabilir. Ama methodlara bir dizinin kendisini veya elemanı argüman ve parametre olarak gönderirsek method içerisine dizinin kendisinin veya dizinin elemanının değeri kopya olarak gider.

Diziler tanımlanırken dizinin ismi o dizinin bellekteki başlangıç adresini (pointer’ını) verir. Aynı şekilde dizinin 0. elemanının bellek adresi dizinin başlangıç bellek adresine eşittir ve diğer elemanlarda bu bellek adresine bellekte kapladığı yer kadar sırasıyla ekleme yapılarak devam edilir.

Bu bağlamda == ifadesi ile iki dizinin birbirine eşit olup olmadığını kontrol etmeye çalışırsak aslında iki dizinin bellekteki başlangıç adreslerinin birbirine eşit olup olmadığını kontrol etmiş oluruz.

Eğer bir dizinin başka bir dizi ile eşit olup olmadığını kontrol etmek istersek iki dizinin tek tek elemanlarının birbirine eşit olup olmadığını kontrol etmek bir çözüm olabilir.

Comments


bottom of page