JAVA – Arrays ( Diziler )

Merhaba, bu bölümde java’da diziler konusuna detaylı bir şekilde değinmek istiyorum. Diziler ( Arrays) konusu programlama dillerinin olmazsa olmaz çok önemli konularındandır. O halde bu yazıda nelere değineceğim onlara bir bakalım. 

  1.  Diziler nasıl tanımlarız
  2. Dizi oluşturma
  3. Dizi elemanlarına erişme
  4. for loop ,for each yapısı ile dizi elemanları üzerinde gezinme
  5. Bir diziyi başka bir diziye nasıl kopyalarız
  6. Primitif ve referans tipli dizilerin kopyalanması 
  7. Çok boyutlu dizilerin kullanımı

Dizi (Array) nedir ?

Birden fazla veriyi aynı tür  bir veri tipinde saklayabilmemize olanak sağlayan belirli bir uzunluğu olan veri yapısı diye tanımlayabiliriz. Hangi durumlarda dizileri kullanmak zorunda kalırız bir örnek ile açıklayalım.  Çalışanlar ile ilgili bir program yaptığımızı varsayalım. 3 tane çalışanımız var ve bunların sicil numaralarını tutacak değişkenler oluşturmamız gerekiyor. bunun için şöyle bir yapı tanımlarız . 

Evet bu yapı bizim şu ana kadar ki problemimizi çözmeye kafi ancak bunu biraz arttırmak gerekirse ? 

Yine bir çözüm bulduk ve sonuç doğru. Ancak bu sayı biraz daha artarsa , mesela 1000 tane ! o zaman 1000 taneyi yan yana yazmak gibi bir fikri düşünemeyiz sanırım.  Yok ben düşünürüm deseniz bile bunu tanımlamak sonunda oluşacak yapıyı kontrol altına  almak gerçekten çok zor olacaktır. 

İşte burada Diziler  (Arrays) yardımımıza koşuyor. İstenilen kadar aynı tip veriyi bir tane değişken içinde saklayabilme olanağını bize sağlıyor. Diziler bize maximum 2,147,483,647 tane veriyi tek bir dizide saklayabilme imkanını sağlıyor. 

Peki değişken nasıl bir dizi haline geliyor ? Veri tipinin arkasına ([ ]) hemen bu işareti eklerseniz artık sizin değişkeniniz bir dizi haline gelmiş oluyor. hemen basitçe konuyu açalım. 

işte hepsi bu kadar .  başka örneklere de bakalım

Not : Diziler sabit uzunlukta veri saklarlar  ve bu bilgiler hafızada yan yana bulunurlar

Java’da diziler birer Object dir 

Java’da bütün diziler bir nesnedir . Java bütün dizileri bir class olarak algılar bu yüzden bütün dizileri birer object – nesne olarak görür. Bu sebeple yeni bir dizi oluştururken new operatörü kullanılır. Bu operatörü kullanarak bu sınıfın constructor yani kurucu metodunu çağırmış oluruz. Şu soru sanırım aklınıza geliyor. Peki bu hangi sınıf ? bunun cevabını yazının ilerleyen bölümünde vereceğim. 

Evet o halde  artık bir değişkeni diziye çevirmeyi ve yeni bir dizi oluşturmayı öğrendiğimize göre artık yeni bir dizi tanımı yapalım.

5 tane değeri tutabilecek bir dizi oluşturduk. başka örnekleri  de inceleyelim

Yukarıda demiştik bütün diziler Object yani nesne dir . isbat edelim mi ? 

bu kod çalıştığında hata almayacaksınız. Veri tipinin primitif olması sizi yanıltmasın . Java’da bütün diziler Object’tir . Dolayısıyla Array sınıfının metodlarını oluşturduğumuz diziler üstünde uygulayabiliriz.  Ancak yukarıdaki “object” nesnenizi dizi olarak kullanmak isterseniz  cast etmeniz gerekecektir. 

Dizi Elemanlarına Erişim Nasıl Sağlanır ?

Yukarıda new operatörünü kullanarak yeni bir dizi oluşturduk. Bu dizinin elemanlarına  “[ ]” bu parentezler içine index numarası yazarak erişim sağlayabiliriz. Dizilerde ilk elemana erişim için “0”  sıfır index’i kullanılır yani sıfır index’li eleman dizinin birinci elemanı demektir.  Buna ingilizce ifade ile ” Zero Based indexing” yani sıfır tabanlı indexleme deniyor.  Eğer 5 elemanlı bir diziniz varsa bunların index ‘i ” 0,1,2,3,4″ tür. 

bu şekilde bir dizimiz varsa . persID[0],persID[1],,persID[2],persID[3],persID[4] şeklinde dizinin tüm elemanlarına erişim sağlanır. Eğer ,persID[5] böyle bir index çağırırsanız runtime hatası alırsınız. 

bu örnekteki gibi değer ataması yapabiliriz. 

Dizinin Uzunluğunu Nasıl Buluruz ?

Array nesnesinin public final olan bir özelliği olan  “length” bize dizinin içinde kaç eleman var bunu verir. 

Eğer bir dizi tanımlaması yaptınız ancak için değer ataması yapmadıysanız yine runtime hatası alacağız ne demek istediğimizi bir örnek üzerinde açıklayalım.

Genellikle programlamada diziler kullanılırken döngülerle erişim sağlanır . Dizinin bütün elemanlarına erişmek istiyorsanız 0 dan başlayan bir döngü ile bunu yapabilirsiniz . 

burada önemli bir noktaya dikkat çekelim şöyle ki;  “i<empId.length;”   dizimizin uzunluğu index değerinden 1 fazladır. burada ” < ” işaretinin kullanımı 1 eksiğine kadar şartını sağlamaktadır.   

Bir dizi oluşturulduktan sonra “length” yani uzunluğu değiştirilemez. Bunun teknik olarak sebebi ise  “final” bir ifade olmasıdır. Java’da final ifadeler değiştirilemezler. 

Dizi Elemanlarının İlk Değerleri

Değişken oluşturduğumuzda default olarak herhangi bir değer taşımazlar. Dolayısıyla değer atamadan kullanmaya çalıştığımızda bize değer atanmadığı ile ilgili hata verecektir “not initialized” benzeri bir hata. Ancak dizilere her zaman default bir değer atanır. Bu atanan değerler kendi türünden bir değerdir. Numerik değişkenlere “0” sıfır, String değişkenlere “null” , boolean değişkenlere “false” değerleri atanır. 

Açıktan Yazarak Dizi Oluşturma

Diziyi değer ataması yaparak da oluşturulabiliriz. Süslü parantezler içerisinde aralarına virgül “,” koyarak bunu yapabilirsiniz. 

Bu kod ile 5 elamanlı bir dizi oluşturmuş oluruz. Burada dizinin uzunluğunu vermediğimize dikkat edin. Elemanları atamakla dizinin otomatik olarak 5 elemanlı olduğunu ifade etmiş olduk.  Alternatif olarak şu şekilde bir tanımlamada hatalı değildir 

yine bu örnekler de incelenebilir.

Eğer diziye değerleri yükleyerek bir dizi oluşturuyorsak uzunluk belirtememize gerek yoktur.

Dizilerde Sınırlar 

Java’da bir diziyi oluşturduktan sonra dizinin boyutunu büyültme yada küçültme gibi bir imkanınız bulunmamakta. Esnek dizi yapıları için farklı nesneler var bunu not olarak söyleyelim.  Eğer 100 elemanlı bir dizi tanımladınız ve 30 tanesini kullandınız kalan 70 ‘i atamazsınız. Yada 100 elemanlı bir dizi tanımladınız bunu 150 ye çıkaramazsınız. Eğer böyle bir durum oluşursa yeni bir dizi tanımlayıp elemanlarınızı buraya kopyalayabilirsiniz. Bunun için 2 yol var . 

  • bir döngü kullanarak 
  • arraycopy() metodu kullanarak 

bu konu ile ilgili detayli bir örnek 

Çok Boyutlu Diziler

Çok boyutlu diziler 2 boyutlu ve 3 boyutlu olarak tanımlanan dizilerdir. Boyutlu dizilerde temel mantık şu şekildedir; normal bir dizi tanımladığımızda bir satır ve birden fazla sutun bulunmakta.  iki boyutlu dizilerde ise birden fazla sutun ile birlikte birden fazla satır da olmaktadır. Aşağıda matris girişi yapıp ekrana yazdırdığımız program yaptım bunu inceleyelim.

 

Değişken Boyutlu Diziler 

Java ‘nın dizilerin boyutları ile alakalı kuralları gereği değişken boyutlu kullanamıyoruz demiştik. Ancak değişken boyutlu diziler olmazsa olmaz bir durum olarak karşımıza çıkmakta. Bunun için javanın ” java.util” paketinin içinde bulunan ” ArrayList” sınıfı yardımımıza koşuyor. Bunun ile değişken uzunlukta diziler tanımlayabiliyoruz. Bu konuyu Collection nesneleri isimli başka bir yazıda detaylandıracağım herkese kolay gelsin…

Add a Comment

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