Java Derslerine devam ediyoruz. Bugün Arrays Sınıfı nedir? Java Diziler ne işe yarar? Tek boyutlu ve çok boyutlu diziler arasındaki farklar nelerdir? Tüm bunlara değinip Arrays Sınıfı metotlarını göreceğiz. Array (dizi), aynı veri tipinden çok sayıda değişkeni tutan yapılara verilen isimdir. Örneğin int tipine sahip birden çok sayıyı bir array içinde tutabiliriz. Bu listedeki öğelere sıra numarasıyla erişip belli başlı işlemler yapabiliriz.
İçindekiler
- Tek Boyutlu Array
- Dizi Oluşturmak – Örnek
- Kafa Karışıklığını Gidermek
- Java Diziler Değer Atama Çeşitleri
- Dizi Boyutunu Öğrenmek (length)
- Önemli Notlar
- Döngülerle Dizilere Değer Atamak ve Yazdırmak
- For-Each Döngüsü
- Array Kopyalama
- CopyOf ve CopyRange Metotları
- Array Sıralama
- Dizilerde Arama Yapmak (binarySearch)
- Çok Boyutlu Arrayler (Diziler)
Tek Boyutlu Array
Tek indisli dizilerdir. 0. bileşenden başlayıp sonuncu bileşene kadar indis sırasına göre dizilirler. Array bildirmek için [] köşeli parantezlerini kullanılır. Örneğin int[] artık bir Array olduğunu belirtir. Bildirim şöyle yapılır. Aşağıdaki 5 boyutlu bir dizidir. İkinci köşeli paranteze dizinin boyutu yazılır.
int[] arrayim = new int [5];
Dizi Oluşturmak – Örnek
- Dizi Bildirimi
- Dizi nesnesini oluşturmak
- Bileşenlere değer atamak
- Dizideki değerleri okumak
Kafa Karışıklığını Gidermek
Yukarıdaki resimde 5 boyutlu bir dizi var. 4’e kadar indise sahip olması kafanızı karıştırmasın 0’da sayarsanız 5 ediyor. İlk indis 0, son indis 4 yani son elemanı çağırmak istiyorsak diziAdi[4] ile çağırırız. Daha önce bahsetmiştim programlamada sayımlar 0. indisten başlar bunu asla unutmayın.
Java Diziler Değer Atama Çeşitleri
Dizi Boyutunu Öğrenmek (length)
Önemli Notlar
- Java Diziler atanmayan değer varsayılan olarak 0’dır. Yani 5 boyutlu bir dizi oluşturup ilk indise (0’a) değer atarsak geriye kalan indislerdeki değerler 0 olur.
- Tanımlanmış dizinin boyutu değiştirilemez. Yani dizi boyutu arttırmak veya azaltmak mümkün değildir. Ancak bir başka diziye aktarımla çözülebilir.
- Boyutundan büyük bir indisten veri almaya veya atamaya çalışırsak NullPointerException hatası verir.
- İstediğimiz tipin dizisini oluşturabiliriz. String, int, float veya nesne fark etmiyor tipi biz belirliyoruz. Hatta dilersek Object tipindeki dizilerle tüm tipleri bir arada tutabiliriz yalnız riskli bir işlemdir.
Döngülerle Dizilere Değer Atamak ve Yazdırmak
Henüz görmediğimiz bir konu bu yazıdan sonra anlatmayı düşünüyorum fakat kısaca döngülere değinip kullanmamız gerekiyor. Döngüler bir koşula bağlı olarak belirlediğimiz sayıda bir bloğu çalıştırmak için kullanılır. Bu sayı dizinin boyutu kadar olabilir bizde bu sırada diziden değer okuyabilir veya diziye değer atayabiliriz. Örnek üzerinde daha iyi şekilde görelim.
For-Each Döngüsü
Bu döngü hemen yukarıdaki for döngüsünden farklı olarak daha basittir. For döngüsü ile aynı işi yapar fakat elemanları sırayla getirir. İndis vermez direkt olarak elemanı verir. Hemen aşağıdaki örnekte görebiliriz. Eğer for döngüleri kafanızı karıştırdıysa Java Ders 8‘i okuyup buraya tekrar dönebilirsiniz.
Array Kopyalama
Array sınıfının copyOf ve copyRange metotları bulunmaktadır. Bunlara geçmeden önce System sınıfının bir metodunu inceleyelim. System sınıfında yer alan arraycopy(Object src, int srcPos, Object dest, int destPos, int length) metodun parametreleri şunları ifade eder.
Parametre | Özelliği |
Object src | Kopyalanacak Kaynak Array |
int srcPos | Kaynağın hangi indisinden kopyalanmaya başlanacak |
Object dest | Hedef Array |
int destPos | Hedef Array’e hangi indisinden itibaren yapıştırma başlanacak |
int length | Kaç bileşen kopyalanacak |
CopyOf ve CopyRange Metotları
Array Sıralama
Arrays sınıfının farklı veri tiplerini sıralamak için birçok metodu vardır. Bu metotların hepsi static olduğu için nesne oluşturmaya gerek kalmadan direkt kullanılabilir. Sayıları sıralamak, metinleri sıralamak gibi bir çok işlemi bu metotlarla yapabiliriz.
Dizilerde Arama Yapmak (binarySearch)
Çok Boyutlu Arrayler (Diziler)
Array of Array olarak adlandırılır. Birden çok indise bağlı olan arraylerdir. Oluşturma, değer atama, değer okuma gibi işlemler tek boyutlu dizilerde olduğu gibidir. Fakat bundaki fark daha fazla boyut olduğundan birden fazla sütun ve satıra sahiptir aşağıda 2 boyutlu bir diziyi görebilirsiniz.
int[][] dizim = new int[2][3];
Bugünkü Java Dersinde Arrays Sınıfını görüp tek boyutlu dizileri ve çok boyutlu dizileri inceledik. Ayrıca Arrays sınıfının birçok metoduna değindik umarım sizler için faydalı olmuştur. Döngüler de kafanız karşıtıysa bir sonraki konuyu okuyup döngüleri iyice öğrenip tekrar buraya dönebilirsiniz. Sonraki dersimizde görüşmek üzere.
Elinize sağlık çok güzel anlatmışsınız