🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-12: Diziler (Arrays) ve `Arrays` Yardımcı Sınıfı 📊

Konu Özeti

Java'da aynı türden verileri saklamak için kullanılan dizilerin tanımlanması, ilklendirilmesi ve elemanlara erişim yöntemleri açıklanıyor. Klasik for ve for-each döngüleriyle dizi üzerinde gezinme, çok boyutlu dizilerle matris yapıları oluşturma ve java.util.Arrays yardımcı sınıfının sort, binarySearch, equals, fill gibi metotlarıyla dizi işlemleri örneklerle gösteriliyor. Ayrıca ArrayIndexOutOfBoundsException hatasına dikkat çekiliyor.

🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-12: Diziler (Arrays) ve `Arrays` Yardımcı Sınıfı 📊

Selamlar! Serimizin 12. bölümüne hoş geldiniz.

Önceki bölümde OOP’nin dördüncü temel direği olan Abstraction (Soyutlama) ilkesini, Abstract Class ve Interface mimarilerini detaylarıyla incelemiş, böylece OOP mimarisini tamamlamıştık. Bu bölümde ise aynı türden birden fazla veriyi tek bir değişken altında toplamamızı sağlayan **Dizileri (Arrays)**, **Çok Boyutlu Dizileri**, **For-Each Döngüsünü** ve **`java.util.Arrays`** yardımcı sınıfını işleyeceğiz.

---

📌 1. Dizi (Array) Nedir ve Nasıl Tanımlanır? 🧱

Dizi, aynı veri tipindeki birden fazla değeri bellekte **ardışık (contiguous)** olarak saklayan sabit boyutlu (fixed-size) bir veri yapısıdır.

### Dizi Özellikleri:
• Dizilerin boyutu oluşturulurken belirlenir ve **sonradan değiştirilemez!**
• Dizi elemanlarına 0’dan başlayan **indeks (index)** numaraları ile erişilir.
• Diziler Java’da birer **Referans Tiptir (Reference Type)** ve Heap bölgesinde saklanır.

### Dizi Tanımlama ve İlklendirme Yöntemleri:

public class Main {
public static void main(String[] args) {
// 1. Yöntem: Boyutu belirterek dizi oluşturma (Elemanlar varsayılan değerleri alır -> 0, null, false)
int[] sayilar = new int[5]; // 5 elemanlı boş bir int *****
sayilar[0] = 10; // 0. indekse değer atama
sayilar[1] = 20;

// 2. Yöntem: Elemanları doğrudan tanımlama süreci
String[] sehirler = {"Ankara", "İstanbul", "İzmir", "Bursa"};

// Dizi Elemanına Erişim ve Yazdırma
System.out.println("İlk Şehir: " + sehirler[0]);
System.out.println("Dizinin Boyutu (Eleman Sayısı): " + sehirler.length);
}
}

---

🔄 2. Dizi Üzerinde Gezinme: Klasik `for` ve `for-each` 🌀

Dizi elemanlarını tek tek işlemek için döngüler kullanılır.

### A. Klasik `for` Döngüsü (İndekse İhtiyaç Duyulduğunda):
for (int i = 0; i < sehirler.length; i++) {
System.out.println("İndeks " + i + " -> Şehir: " + sehirler);
}

### B. Gelişmiş For-Each Döngüsü (Enhanced For Loop):
İndeks numarasına ihtiyaç duyulmadan, sadece elemanları sırayla okumak için kullanılır. Okunması çok daha temizdir.

String[] meyveler = {"Elma", "Armut", "Muz", "Çilek"};

for (String meyve : meyveler) {
System.out.println("Meyve: " + meyve);
}

---

📐 3. Çok Boyutlu Diziler (Multi-Dimensional Arrays) 🗺️

Matris veya tablo yapılarını (satır ve sütun) temsil etmek için iki veya daha fazla boyutlu diziler kullanılır.

Sözdizimi: `int[][] matris = new int[SatirSayisi][SutunSayisi];`

public class Main {
public static void main(String[] args) {
// 2 Satır, 3 Sütunlu Matris Tanımlama
int[][] matris = {
{1, 2, 3}, // 0. Satır
{4, 5, 6} # 1. Satır
};

// Matris Elemanlarına Erişim: [Satır][Sütun]
System.out.println("Satır 1, Sütun 2 Değeri: " + matris[1][2]); // Çıktı: 6

System.out.println("--- Matris Ekrana Yazdırma ---");
// İç içe döngü ile matrisi gezme
for (int i = 0; i < matris.length; i++) { // Satır sayısı
for (int j = 0; j < matris.length; j++) { // Sütun sayısı
System.out.print(matris[j] + " ");
}
System.out.println(); // Satır bitince alt satıra geç
}
}
}

---

🛠️ 4. `java.util.Arrays` Yardımcı Sınıfı 🧰

Java, diziler üzerinde arama, sıralama, kopyalama ve ekrana yazırma gibi sık yapılan işlemleri kolaylaştırmak için `Arrays` sınıfını sunar.

Sınıfı kullanabilmek için `import java.util.Arrays;` eklenmelidir.

import java.util.Arrays;

public class Main {
public static void main(String[] args) {
int[] sayilar = {42, 15, 8, 23, 4, 16};

// 1. Diziyi Metin Olarak Ekrana Yazdırma (`Arrays.toString()`)
System.out.println("Orijinal Dizi: " + Arrays.toString(sayilar));

// 2. Diziyi Küçükten Büyüğe Sıralama (`Arrays.sort()`)
Arrays.sort(sayilar);
System.out.println("Sıralı Dizi : " + Arrays.toString(sayilar));

// 3. Ikili Arama (`Arrays.binarySearch()`)
// ⚠️ Dizi kesinlikle SIRALI olmalıdır!
int indeks = Arrays.binarySearch(sayilar, 23);
System.out.println("23 Sayısının Bulunduğu İndeks: " + indeks);

// 4. Dizileri Karşılaştırma (`Arrays.equals()`)
int[] dizi1 = {1, 2, 3};
int[] dizi2 = {1, 2, 3};
boolean esitMi = Arrays.equals(dizi1, dizi2);
System.out.println("Diziler Eşit mi?: " + esitMi); // true

// 5. Diziyi Belirli Bir Değerle Doldurma (`Arrays.fill()`)
int[] bosDizi = new int[5];
Arrays.fill(bosDizi, 7);
System.out.println("Doldurulmuş Dizi: " + Arrays.toString(bosDizi)); // [7, 7, 7, 7, 7]
}
}

---

⚠️ 5. Kritik Hata: `ArrayIndexOutOfBoundsException` 🚨

Bir dizinin sınırları dışındaki bir indekse erişmeye çalıştığınızda Java çalışma zamanında (runtime) bu hatayı fırlatır!

int[] dizi = new int[3]; // Geçerli indeksler: 0, 1, 2
// System.out.println(dizi[3]); // HATA! ArrayIndexOutOfBoundsException fırlatır!

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde Tek ve Çok Boyutlu Dizileri, `for-each` döngüsünü, `java.util.Arrays` sınıfının en sık kullanılan metotlarını ve dizi sınır hatalarını öğrendik.

👉 **Bölüm 13'te Bizi Ne Bekliyor?**
• Java Collections Framework'e Giriş 📦
• Dinamik Diziler: **`ArrayList`** Sınıfı
• `ArrayList` vs Standart Array Karşılaştırması
• Bağlı Liste Mimarisi: **`LinkedList`**
• `
List` Arayüzü ve Metotları (`add`, `remove`, `get`, `set`)

Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! ☕✨

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
136,582Threads
3,306,772Messages
328,430Members
QixooLatest member
Top Bottom