Java diziler, aynı türden birden fazla değeri tek bir değişken altında düzenli biçimde saklamak için kullanılır. Bir öğrencinin notlarını, farklı günlerdeki sıcaklık ölçümlerini veya ürün miktarlarını ayrı ayrı değişkenler yerine tek bir yapı içinde tutmasını sağlar.
Java’da bir dizi oluştururken üç soruyu düşünmek iyi bir başlangıçtır: Saklanacak verilerin türü nedir, eleman sayısı sabit mi ve verilere indeks numarasıyla erişmem gerekiyor mu? Bu soruların cevabı dizinin uygun bir seçim olup olmadığını anlamayı kolaylaştırır.
Java’da Dizi Nedir ve Ne Zaman Kullanılır?
Java dizisi, aynı veri türündeki birden fazla elemanı sıralı biçimde saklayan bir veri yapısıdır. Örneğin beş sınav notunu saklamak için beş ayrı değişken tanımlamak yerine tek bir int[] dizisi kullanılabilir:
int birinciNot = 70;
int ikinciNot = 85;
int ucuncuNot = 90;
Bu yaklaşım az sayıda veri için mümkün olsa da eleman sayısı arttıkça yönetimi zorlaşır. Dizi kullandığınızda ilişkili değerleri tek bir isim altında toplarsınız. Böylece döngülerle tüm elemanları okuyabilir, yazdırabilir veya hesaplama yapabilirsiniz.
Bir Java dizisinin temel özellikleri şunlardır:
- Aynı türde elemanlar saklar. Bir
int[]dizisi tam sayılar, birString[]dizisi metinler içerir. - Sabit uzunluğa sahiptir. Dizi oluşturulduktan sonra kaç elemanlık olduğu değiştirilemez.
- Elemanlara indeks numarasıyla erişilir.
- İndeksler 0’dan başlar. İlk eleman 0, ikinci eleman 1 numaralı indekstedir.
Koddan Önce Kısa Düşünme Kontrolü
Bir veri grubunu diziye dönüştürmeden önce şu kontrolü yapabilirsiniz:
- Her elemanın veri türü aynı mı?
- Eleman sayısı program çalışırken sabit kalacak mı?
- Belirli bir elemana sıra numarasıyla erişmem gerekiyor mu?
Örneğin haftanın yedi gününe ait sıcaklık değerleri veya bir sınıftaki sabit sayıdaki sınav notları dizi için uygundur. Buna karşılık eleman sayısı sık sık değişen bir listeyi yönetirken farklı bir veri yapısı daha elverişli olabilir; bu konu ilerleyen bölümlerde karşılaştırılacaktır.
Java’da Dizi Nasıl Oluşturulur ve Başlatılır?

Dizi Bildirimi
Java’da dizi bildirimi için veri türünün yanına köşeli parantez eklenir. Henüz eleman sayısı belirlenmeden yapılan bildirim şu şekildedir:
int[] notlar;
String[] renkler;
Bu satırlar dizinin adını ve türünü tanımlar; ancak henüz bellekte kullanılabilir bir dizi oluşturmaz.
Boyut Belirleyerek Dizi Oluşturma
Belirli bir uzunlukta dizi oluşturmak için new anahtar kelimesi kullanılır:
int[] notlar = new int[3];
Bu ifade üç elemanlık bir tam sayı dizisi oluşturur. new int[3] ile oluşturulan dizinin elemanları başlangıçta tam sayılar için varsayılan değer olan 0 değerini taşır. Dizi oluşturulduktan sonra uzunluğu değiştirilemez; daha fazla elemana ihtiyaç varsa yeni bir dizi oluşturmak gerekir.
Başlangıç Değerleriyle Dizi Tanımlama
Elemanların ilk değerlerini biliyorsanız dizi doğrudan değerlerle başlatılabilir:
String[] renkler = {"Kırmızı", "Mavi", "Yeşil"};
Aşağıdaki örnek, ayrı değişkenler yerine ilişkili notları tek yapı altında yönetme problemini gösterir:
public class Main {
public static void main(String[] args) {
int[] notlar = new int[3];
notlar[0] = 70;
notlar[1] = 85;
notlar[2] = 90;
System.out.println(notlar[1]);
}
}
Beklenen çıktı:
85
Burada notlar[1], dizinin ikinci elemanını temsil eder. Nesne türündeki dizilerde ise elemanlar başlangıçta boş referans, yani null, içerebilir. Bu nedenle bir nesne dizisini kullanmadan önce elemanların gerçekten oluşturulup oluşturulmadığını kontrol etmek gerekir. Java temellerini uygulamalı biçimde ilerletmek isteyenler, birebir Java özel ders çalışmalarıyla dizi mantığını kendi hızına göre pekiştirebilir.
Dizi Elemanlarına Erişme, Eleman Güncelleme ve Döngüler
Dizi elemanına erişmek için dizi adının yanında köşeli parantez içinde indeks yazılır. Bir elemanı değiştirmek için de aynı gösterim kullanılır:
int[] sayilar = {10, 20, 30};
System.out.println(sayilar[0]);
sayilar[1] = 25;
System.out.println(sayilar[1]);
Dizinin kaç eleman içerdiğini öğrenmek için length özelliği kullanılır. Döngü kurmadan önce şu soruyu sormak yararlıdır: Bu işlemde indekse ihtiyacım var mı?
- İndeks numarası gerekiyorsa klasik
fordöngüsü kullanılır. - Sadece her elemanın değerini okuyacaksanız
for-eachdaha kısa ve anlaşılırdır. - Dizinin uzunluğunu sabit bir sayı olarak yazmak yerine
dizi.lengthkullanmak daha güvenlidir.
Aşağıdaki örnek, bir sayı dizisindeki tüm elemanları yazdırır ve toplamını hesaplar:
public class Main {
public static void main(String[] args) {
int[] sayilar = {4, 7, 9};
int toplam = 0;
for (int i = 0; i < sayilar.length; i++) {
System.out.println(sayilar[i]);
toplam += sayilar[i];
}
System.out.println("Toplam: " + toplam);
}
}
Beklenen çıktı:
4
7
9
Toplam: 20
Aynı diziyi yalnızca okumak isteseydiniz for-each kullanabilirdiniz:
for (int sayi : sayilar) {
System.out.println(sayi);
}
Bu döngüde indeksle uğraşmadan her elemanın değerine sırayla ulaşırsınız. Ancak hangi konumda olduğunuzu bilmeniz veya belirli bir indeksteki elemanı güncellemeniz gerekiyorsa klasik for döngüsü daha uygundur.
Java Dizilerinde İndeks Sınırları ve Yaygın Hatalar
Java dizilerinde ilk indeks 0’dır. Dört elemanlı bir dizinin indeksleri 0, 1, 2 ve 3 olur; son geçerli indeks her zaman dizi.length - 1 ifadesiyle bulunur. Örneğin new int[4] ile oluşturulan bir dizide 4 numaralı indekse erişilemez.
int[] puanlar = {70, 80, 90};
System.out.println(puanlar[0]); // 70
System.out.println(puanlar[2]); // 90
// System.out.println(puanlar[3]); // Hata
Bu örnekte çözülen problem, dizinin ilk ve son elemanına doğru indeksle ulaşmaktır. Beklenen çıktı sırasıyla 70 ve 90 değerleridir. 3 numaralı indeks kullanılırsa Java, ArrayIndexOutOfBoundsException hatası verir; çünkü dizinin uzunluğu 3, son geçerli indeksi ise 2’dir.
İndeks hatalarını teşhis ederken aşağıdaki kontrol listesini uygulayın:
- Dizinin uzunluğunu
dizi.lengthile kontrol edin. - Döngü koşulunu çoğunlukla
i < dizi.lengthbiçiminde kurun. - Erişilecek indeksin 0 ile
length - 1arasında olduğundan emin olun. - Son elemanı kontrol ederken
lengthyerinelength - 1kullanın.
Örneğin i <= dizi.length koşulu hatalıdır; çünkü döngü son turda olmayan bir indekse ulaşmaya çalışır. Hata mesajını gizlemek yerine sınır koşulunu düzeltmek daha doğru yaklaşımdır.
Başlangıçta oluşturulan dizilerin elemanları da önemlidir. new int[4] içindeki sayısal elemanlar varsayılan olarak 0, boolean dizilerindeki elemanlar false olur. String veya bir sınıftan üretilen nesneleri tutan referans türü dizilerinde ise elemanlar başlangıçta null olabilir.
Uzunluğu sıfır olan bir dizi farklı bir durumdur. new int[0] dizisinde hiç eleman bulunmadığı için i < dizi.length koşuluyla kurulan döngü hiç çalışmaz. Ancak dizi[0] ifadesiyle doğrudan erişmeye çalışmak yine indeks hatasına neden olur.
String, Nesne ve Çok Boyutlu Diziler

Diziler yalnızca sayıları saklamak için kullanılmaz. String[] metinleri, int[] sayıları, nesne dizileri ise belirli bir sınıftan üretilen nesneleri tutar.
class Student {
String name;
Student(String name) {
this.name = name;
}
}
Student[] students = {
new Student("Ayşe"),
new Student("Mehmet")
};
System.out.println(students[0].name);
Bu örneğin çözdüğü problem, aynı türden öğrenci nesnelerini tek bir yapı içinde saklamaktır. Her eleman doğrudan öğrencinin kendisini değil, Student nesnesine ait bir referansı taşır. Beklenen çıktı Ayşe olur. Benzer biçimde String[] dersler metin listesi, int[] notlar ise sayısal not listesi olarak kullanılabilir.
Çok boyutlu diziler, verileri satır ve sütun düzeninde tutar. Örneğin int[][] matris = new int[2][3] ifadesi iki satırlı ve üç sütunlu bir yapı oluşturur.
int[][] matris = {
{1, 2, 3},
{4, 5, 6}
};
for (int satir = 0; satir < matris.length; satir++) {
for (int sutun = 0; sutun < matris[satir].length; sutun++) {
System.out.print(matris[satir][sutun] + " ");
}
System.out.println();
}
İçteki döngü sütunları, dıştaki döngü satırları gezer. Kodun çözdüğü problem, tablo biçimindeki verileri sırayla ekrana yazdırmaktır. Beklenen çıktı iki satırda 1 2 3 ve 4 5 6 şeklindedir. Bu yapı başlangıç seviyesinde tablolar, oyun tahtaları veya puan çizelgeleri için düşünülebilir.
Dizi mi ArrayList mi? Doğru Veri Yapısını Seçme
Dizi ile ArrayList arasında seçim yaparken önce verinin değişip değişmeyeceğini düşünün. Koddan önce bu kararı vermek, daha sonra gereksiz dönüşümleri ve karmaşayı azaltır.
| Ölçüt | Dizi | ArrayList |
|---|---|---|
| Boyut | Oluşturulduktan sonra sabittir. | Eleman sayısı dinamik biçimde değişebilir. |
| Ekleyip silme | Doğrudan ekleme ve silme modeli sunmaz. | Eleman ekleme ve silme işlemleri için metotlar kullanılır. |
| İndeksle erişim | İndeks üzerinden erişilir. | İndeks üzerinden erişim desteklenir. |
| Kullanım kolaylığı | Sabit ve sade yapılar için uygundur. | Değişken uzunluktaki listelerde pratiktir. |
| Performans | İşlemin türüne ve senaryoya göre değerlendirilir. | İşlemin türüne ve senaryoya göre değerlendirilir. |
Karar vermek için şu dört soruyu sorun:
- Eleman sayısı baştan belli ve değişmeyecek mi?
- Ortaya veya sona ekleme-silme sık yapılacak mı?
- İndeksle doğrudan erişim önemli mi?
- İlkel türlerle sade ve sabit boyutlu bir yapı mı gerekiyor?
Sabit sayıda sensör ölçümü, haftanın günleri veya değişmeyen sütun yapısı için dizi mantıklıdır. Kullanıcı listesi gibi büyüyüp küçülen koleksiyonlarda ArrayList düşünülebilir. Ancak ArrayList kullanmak her senaryoda otomatik olarak daha iyi anlamına gelmez; veri yapısı, problemin ihtiyaçlarına göre seçilmelidir. Java öğrenme yolculuğunu birebir ve yapılandırılmış biçimde ilerletmek isteyenler için 1-1 Java özel ders programı değerlendirilebilir.
- Boyut sabitse ve sadelik önemliyse: dizi.
- Liste büyüyüp küçülüyorsa: ArrayList.
- Seçimden emin değilseniz: önce ekleme, silme ve erişim ihtiyaçlarını yazın.
Dizi Öğrenirken Uygulanabilecek Mini Alıştırma
Diziyi gerçekten anlamanın iyi bir yolu, beş günlük satış değerini veya beş sınav puanını bir int dizisinde tutup bu veriler üzerinde işlem yapmaktır. Önce veriyi nasıl temsil edeceğinizi düşünün, ardından toplamı, ortalamayı ve en yüksek değeri hesaplayın.
- Veriyi temsil edin: Beş sayıyı bir
intdizisine yerleştirin. - Toplamı oluşturun: Başlangıçta
0olan bir toplam değişkeni kullanın. - Karşılaştırmayı başlatın: En yüksek değer için dizinin ilk elemanını başlangıç kabul edin.
- Diziyi tek geçişte işleyin: Her elemanı toplama ekleyin ve gerekiyorsa en yüksek değeri güncelleyin.
- Sonucu yazdırın: Toplamı, ortalamayı ve en yüksek değeri ekrana gösterin.
Aşağıdaki örnek, bu işlemleri tek bir for döngüsü içinde yapar. Böylece dizi üzerinde gereksiz tekrarlar yapılmadan veriler işlenir.
public class MiniAlistirma {
public static void main(String[] args) {
int[] puanlar = {70, 85, 90, 65, 80};
int toplam = 0;
int enYuksek = puanlar[0];
for (int puan : puanlar) {
toplam += puan;
if (puan > enYuksek) {
enYuksek = puan;
}
}
double ortalama = (double) toplam / puanlar.length;
System.out.println("Toplam: " + toplam);
System.out.println("Ortalama: " + ortalama);
System.out.println("En yüksek: " + enYuksek);
}
}
Bu kodun beklenen çıktısı Toplam: 390, Ortalama: 78.0 ve En yüksek: 90 şeklindedir. Buradaki asıl kazanım yalnızca dizi sözdizimini öğrenmek değildir; veriyi önce modellemek, sonra uygun değişkenlerle adım adım işlemek ve sonucu anlamlandırmaktır.
Kendi seviyenizi kontrol etmek isterseniz ücretsiz Java bilgi testi ile temel konulardaki eksiklerinizi gözden geçirebilirsiniz.
Sık Sorulan Sorular
Java dizilerinde indeks neden 0’dan başlar?
Java dizilerinde ilk eleman, dizinin başlangıç konumunu temsil ettiği için 0 indeksine sahiptir. Beş elemanlı bir dizinin indeksleri bu nedenle 0 ile 4 arasındadır.
Java’da bir dizinin uzunluğu oluşturulduktan sonra değiştirilebilir mi?
Hayır. Java’da bir dizinin uzunluğu oluşturulduğu anda belirlenir ve sonradan doğrudan değiştirilemez. Farklı uzunlukta yeni bir dizi oluşturup mevcut elemanları aktarmak gerekir.
for döngüsü ile for-each döngüsü arasında hangi durumda seçim yapılır?
İndeks numarasına ihtiyaç duyuyorsanız klasik for döngüsünü kullanın. Yalnızca elemanların değerlerini sırayla okumak veya işlemek istiyorsanız for-each daha sade bir seçimdir.
ArrayIndexOutOfBoundsException hatası nasıl önlenir?
İndeksin 0 ile dizi.length - 1 arasında olduğundan emin olun. Döngülerde koşulu genellikle i < dizi.length biçiminde kurmak bu hatayı önlemeye yardımcı olur.
Dizi yerine ne zaman ArrayList kullanılmalıdır?
Eleman sayısının çalışma sırasında artıp azalması gerekiyorsa ArrayList daha uygundur. Eleman sayısı sabitse ve hızlı, doğrudan erişim yeterliyse dizi kullanmak daha anlaşılır olabilir.
Dizilerde sağlam bir temel oluşturmak, daha karmaşık veri yapıları ve algoritmaları öğrenirken düşünme sürecini kolaylaştırır.