Konular

Javada Diziler

Java da diziler nesnedir; içerisinde belirli sayıda eleman bulunur. Eğer bu sayı sıfır ise, dizi boş demektir. Dizinin içerisindeki elemanlara eksi olmayan bir tam sayı ile ifade edilen dizi erişim indisi ile erişilir. Bir dizide n tane eleman varsa dizinin uzunluğu da n kadardır; ilk elemanın indisi/konumu 0’dan başlar, son elemanı ise n-1’dir.
Dizi içerisindeki elemanlar aynı türden olmak zorundadır. Eğer dizi içerisindeki elemanların türü double ise, bu dizinin türü için double denilir. Bu double tipinde olan diziye String tipinde bir nesne atanması denenirse hata ile karşılaşılır. Diziler temel veya herhangi bir sınıf tipinde olabilir...


Dizi Türündeki Referanslar

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

double[] dd ; // double tipindeki dizi
double dd[] ; // double tipindeki dizi
float [] fd ; // float tipindeki dizi
Object[] ao ; // Object tipindeki dizi 
 

Dizi nesnelerini oluşturmak için new anahtar sözcüğü kullanılması gereklidir.

double[] d = new double[20]; // 20 elemanlı double tipindeki dizi
double dd[]= new double[20]; // 20 elemanlı double tipindeki dizi
float []fd = new float [14]; // 14 elemanlı float tipindeki dizi
Object[]ao = new Object[17]; // 17 elemanlı Object tipindeki dizi
String[] s = new String[25]; // 25 elemanlı String tipindeki dizi
 
 

Dizi Boyunun Değiştirilmesi

Dizi boyutu birkez verildi mi, artık değiştirilemezler!

:  

int liste[] = new int[5] ;

liste = new int[15] ; // yeni bir dizi nesnesi bağlandı
 
 

Yukarıda dizi boyutlarının büyütüldüğünü sanmayın; burada, yalnızca yeni bir dizi nesnesi daha oluşturulmaktır. liste dizi referansının daha evvelden bağlanmış olduğu dizi nesnesi (new int[5]), çöp toplama işlemi sırasında çöp toplayıcısı tarafından bellekten silinecektir.


Dizi Elemanlarına Erişim

Java dilinde dizi kullanımı diğer dillere nazaran daha az risklidir; anlamı, eğer tanımladığımız dizinin sınırları aşılırsak, çalışma-anında (runtime) hata ile karşılaşacağımızdır. Örneğin 20 elemanlı bir double dizisi tanımlanmış olsun. Eğer bu dizinin 78. elemanına ulaşılmak istenirse (- ki böyle bir indisli eleman yok), olanlar olur ve çalışma-anında hata alınır; böylesi hatanın (ArrayIndexOutOfBounds Exception) çalışma-anında alınması güvenlik açısından güzel bir olaydır. Böylece dizi için ayrılmış bellek alanından dışarı çıkılıp başka verilere müdahale edilmesi engellenmiş olunur.

Örnek  

public class DiziElemanlariGosterimBir {

    public static void main(String args[]) {
        double[] d = {2.1, 3.4, 4.6, 1.1, 0.11};
        String[] s = {"defter", "kalem", "sarman", "tekir", "boncuk"};
        ;
// double tipindeki dizimizi ekrana yazdırıyoruz
        for (int i = 0; i < d.length; i++) {
            System.out.println("d[" + i + "] = " + d[i]);
// System.out.println("d["+78+"] = " + d[78] ); // Hata !
        }
        System.out.println("---------------");
// String tipindeki dizimizi ekrana yazdırıyoruz
        for (int x = 0; x < s.length; x++) {
            System.out.println("s[" + x + "] = " + s[x]);
// System.out.println("s["+78+"]=" + s[78] ); // Hata !
        }
    }
}
 

Length ifadesiyle bir dizinin içerisindeki eleman sayısı öğrenilir. Bu örnekte iki adet dizi tanımlandı:double ve String türündeki dizilerin içerisine 5’er adet eleman yerleştirildi ve sonradan bunları for döngüsü ile ekrana yazdırıldı. i < d.length ifadesine dikkat edilirse, döngü sayacın 4’e kadar artmaktadır; ancak, döngü sayacının 0'dan başladığı unutulmamalıdır.

Eğer 5 elemana sahip olan dizinin 78. elemanına erişilmeye kalkışılırsa, derleme anında (compile-time) bir hata ile karşılaşılmaz; ancak, uygulama yürütüldüğü zaman; yani, çalışma-anında (runtime) hata ile karşılaşılır. Uygulamanın sonucu aşağıdaki gibi olur:

d[0] = 2.1
d[1] = 3.4
d[2] = 4.6
d[3] = 1.1
d[4] = 0.11

---------------

s[0] = defter
s[1] = kalem
s[2] = sarman
s[3] = tekir
s[4] = boncuk
 
 

Bir önceki uygulamanın çalışma anına hata vermesi istenmiyorsa, yorum satırı olan yerler açılması ve uygulamanın baştan derlenip çalıştırması gerekmektedir. Aynı örnek daha değişik bir şekilde ifade edilebilir: 

DiziElemanlariGosterimIki.java

public class DiziElemanlariGosterimIki {

    double[] d;
    String[] s;

    public DiziElemanlariGosterimIki() { // double tipindeki diziye eleman atanıyor
        d = new double[5];
        d[0] = 2.1;
        d[1] = 3.4;
        d[2] = 4.6;
        d[3] = 1.1;
        d[4] = 0.11;
// d[5] = 0.56 ; // Hata !
// String tipindeki diziye eleman atanıyor
        s = new String[5];
        s[0] = new String("defter");
        s[1] = new String("kalem");
        s[2] = new String("sarman");
        s[3] = new String("tekir");
        s[4] = new String("boncuk");
// s[5] = new String("duman"); // Hata !
    }

    public void ekranaBas() { // double tipindeki diziyi ekrana yazdırıyoruz
        for (int i = 0; i < d.length; i++) {
            System.out.println("d[" + i + "] = " + d[i]);
        }
        System.out.println("-------------------"); // String dizi ekrana yazdırılıyor
        for (int x = 0; x < s.length; x++) {
            System.out.println("s[" + x + "] = " + s[x]);
        }
    }

    public static void main(String args[]) {
        DiziElemanlariGosterimIki deg = new DiziElemanlariGosterimIki();
        deg.ekranaBas();
    }
}
 
 

Bu örnekte 5 elemanlı dizilere 6. eleman eklenmeye çalışıldığında, derleme anında (compile-time) herhangi bir hata ile karşılaşmayız. Hata ile karışılacağımız yer çalışma anındadır. Çünkü bu tür hatalar çalışma anında kontrol edilir. Yalnız çalışma anında hata oluşturabilecek olan satırlar kapatıldığı için şu an için herhangi bir tehlike yoktur; ancak, çalışma anında bu hatalar ile tanışmak isterseniz, bu satırların başında “//” yorum ekini kaldırmanız yeterli olacaktır. Uygulamanın sonucu aşağıdaki gibi olacaktır:

d[0] = 2.1
d[1] = 3.4
d[2] = 4.6
d[3] = 1.1
d[4] = 0.11
------------------------
s[0] = defter
s[1] = kalem
s[2] = sarman
s[3] = tekir
s[4] = boncuk
 
 
Dizilerin  Elemanlarını Sıralama

Dizi elemanlarını büyükten küçüğe doğru sıralatmak için java.util paketini altındaki Arrays sınıfı kullanılabilir. Bu sınıfın statik sort() yordamı sayesinde dizilerin içerisindeki elemanlar sıralanabilir:


Örnek


DiziSiralama.java

import java.util.*; // java.util kütüphanesini kullanmak için

public class DiziSiralama {

    public static void ekranaBas(double[] d) {
        for (int i = 0; i < d.length; i++) {
            System.out.println("d[" + i + "] = " + d[i]);
        }
    }

    public static void main(String args[]) {
        double d[] = new double[9];
        d[0] = 2.45;
        d[1] = 3.45;
        d[2] = 4.78;
        d[3] = 1.45;
        d[4] = 15.12;
        d[5] = 1;
        d[6] = 9;
        d[7] = 15.32;
        d[8] = 78.17;
        System.out.println("Karisik sirada");
        ekranaBas(d);
        Arrays.sort(d);
        System.out.println("Siralanmis Sirada");
        ekranaBas(d);
    }
}
 
 

Uygulama sonucu aşağıdaki gibi olur:

Karisik sirada

 
d[0] = 2.45
d[1] = 3.45
d[2] = 4.78
d[3] = 1.45
d[4] = 15.12
d[5] = 1.0
d[6] = 9.0
d[7] = 15.32
d[8] = 78.17
 
 

Siralanmis Sirada

d[0] = 1.0
d[1] = 1.45
d[2] = 2.45
d[3] = 3.45
d[4] = 4.78
d[5] = 9.0
d[6] = 15.12
d[7] = 15.32
d[8] = 78.17
 
 

Dizilerin Dizilere Kopyalanması

Bir dizi tümden diğer bir diziye kopyalanabilir:Bunu bir örnekle açıklayalım.

Örnek:


DiziSiralama.java

import java.util.*; // java.util kütüphanesini kullanmak için

public class DiziSiralama {

    public static void ekranaBas(double[] d) {
        for (int i = 0; i < d.length; i++) {
            System.out.println("d[" + i + "] = " + d[i]);
        }
    }

    public static void main(String args[]) {
        double d[] = new double[9];
        d[0] = 2.45;
        d[1] = 3.45;
        d[2] = 4.78;
        d[3] = 1.45;
        d[4] = 15.12;
        d[5] = 1;
        d[6] = 9;
        d[7] = 15.32;
        d[8] = 78.17;
        System.out.println("Karisik sirada");
        ekranaBas(d);
        Arrays.sort(d);
        System.out.println("Siralanmis Sirada");
        ekranaBas(d);
    }
}
 
 

System sınıfının statik yordamı olan arraycopy() sayesinde dizi1 dizi2’ye kopyalandı. Sonuç aşağıdaki gibi olur:

 
dizi2[0] = 1
dizi2[1] = 2
dizi2[2] = 3
dizi2[3] = 4
dizi2[4] = 40
dizi2[5] = 30
dizi2[6] = 20
dizi2[7] = 10
 
 

Javada Diziler Çok Boyutlu Diziler

Çok boyutlu diziler, Java’da diğer programlama dillerinden farklıdır. Sonuçta dizinin tek türde olması gerekir. Yani, dizi içerisinde diziler tanımlayabilirsiniz.

int[ ] t1 = {{ 1, 2, 3 }, { 4, 5, 6 }};
 


Yukarıda ifade edildiği gibi iki boyutlu temel türden oluşmuş çok boyutlu dizi oluşturulabilir. Çok

boyutlu dizileri oluşturmanın diğer bir yolu ise,

int [ ]t1 = new int [3][4] ;
int [ ] t1 = new int [4] ; // ! Hata !
 

Çok boyutlu dizileri bir uygulama üzerinde incelersek;

Örnek:

 


CokBoyutluDizilerOrnekBir.java

public class CokBoyutluDizilerOrnekBir {

    public static void main(String args[]) {
        int ikiboyutlu[][] = new int[3][4];
        ikiboyutlu[0][0] = 45;
        ikiboyutlu[0][1] = 83;
        ikiboyutlu[0][2] = 11;
        ikiboyutlu[0][3] = 18;
        ikiboyutlu[1][0] = 17;
        ikiboyutlu[1][1] = 56;
        ikiboyutlu[1][2] = 26;
        ikiboyutlu[1][3] = 79;
        ikiboyutlu[2][0] = 3;
        ikiboyutlu[2][1] = 93;
        ikiboyutlu[2][2] = 43;
        ikiboyutlu[2][3] = 12;
// ekrana yazdırıyoruz
        for (int i = 0; i < ikiboyutlu.length; i++) {
            for (int j = 0; j < ikiboyutlu[i].length; j++) {
                System.out.println(" ikiboyutlu[" + i + "][" + j + "] = " + ikiboyutlu[i][j]);
            }
        }
    }
}
 
 

Verilen örnekte int türünde 3’e 4’lük (3x4) çok boyutlu dizi oluşturuldu; bu diziyi 3’e 4'lük bir matris gibi de düşünülebilir. Uygulama sonucu aşağıdaki gibi olur:

 
ikiboyutlu[0][0] =45
ikiboyutlu[0][1] =83
ikiboyutlu[0][2] =11
ikiboyutlu[0][3] =18
ikiboyutlu[1][0] =17
ikiboyutlu[1][1] =56
ikiboyutlu[1][2] =26
ikiboyutlu[1][3] =79
ikiboyutlu[2][0] =3
ikiboyutlu[2][1] =93
ikiboyutlu[2][2] =43
ikiboyutlu[2][3] =12
 
 

Uygulama sonucu matris gibi düşünülürse aşağıdaki gibi olur:

45 83 11 18

17 56 26 79

3 93 43 12
 
 

Kaynak: Burak Taş


Yorumunuzu Ekleyin
Javada Diziler Yorumları +1 Yorum
  • mehmet
    1
    mehmet
    iki boyutlu iki dizgiyinasıl kopyalarız?
    hangi, yollatr var??
    10 Ekim 2010 10:14:12, Pazar

Java Değişken Tipleri

Byte, short, int, long, float, double, boolean, char, string

56,247 Okunma Henüz yorum yapılmamış 04/11/2009 13:11:31

Java Diziler

Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız. Java, dizi elemanlarını sırasıyla kontrol eder. Dolayısıyla arada değer atanmamış bir elemana rastlanırsa hata oluşur. Bu da cde çıkan hafıza bozulmalarını önler. Javada dizi kullanmak için ilk önce dizinin tipi verilir. Tip verilirken dizinin büyüklüğü belirtilmez

53,545 Okunma 2 Yorum 19/11/2007 15:13:25

Javada Fonksiyonlar

Değer alan ve geriye değer döndüren fonksiyonlar

50,705 Okunma Henüz yorum yapılmamış 01/04/2010 14:39:09

Java Da Operatörler

Aritmetik operatorler 4 işlem ve mod, arttırma operatorleri, ilişkisel operatorler, mantıksal operatorler, kısa devre mantıksal operatorler

37,591 Okunma Henüz yorum yapılmamış 02/12/2009 13:58:19

Stringleri Karşılaştırma

Stringler bilinen = operatörleri ile karşılaştırılmazlar, ayrıca == ve != operatörleride stringler içindeki karakterleri karşılaştırmazlar

36,967 Okunma Henüz yorum yapılmamış 18/10/2007 12:43:49

J2ee, j2se, j2me Nedir?

J2ee,j2se,j2me hakkında bilgi

32,293 Okunma 1 Yorum 21/10/2009 17:00:15 16/07/2014 17:00:35

Java Terimleri

Java, birbirinden farklı aygıtlarda çalışabilen, bu aygıtlar arasında iletişimi kolay hale getiren programlama dili ve platformudur. Java diliyle yazılmış programlar, Windows, UNIX, Mac işletim sistemi yüklü bilgisayarlarda hiç bir değişiklik yapmayı gerektirmeden çalışabilmektedirler

31,810 Okunma Henüz yorum yapılmamış 16/10/2007 13:23:36

for Döngüsü

26,751 Okunma Henüz yorum yapılmamış 30/12/2009 11:02:00

Java 3D

Son yıllarda çoklu ortamda ilerleme kaydeden Java, Java3D ile yüksek performans isteyen üç boyutlu grafiklerde de 'Ben varım!' diyor.

25,064 Okunma Henüz yorum yapılmamış 26/01/2009 22:23:10

while döngüsü

Dizilerin olmazsa olmazı

24,881 Okunma Henüz yorum yapılmamış 17/12/2009 10:53:28

Java Operatörleri

Mod Operatörü, Aritmetik Atama Operatörü, Arttırma Azaltma Operatörleri, Iliskisel Operatorler ve Kısa Devre Iliskisel Operatörler, Kısa devre iliskisel operatorler, ? Operatoru

24,741 Okunma Henüz yorum yapılmamış 04/12/2009 12:11:34

Javada İlk Kod

Java classpath tanımlamaları, consolda ilk program yazılması, derlenmesi, çalıştırılması aynı uygulamanın netbeansta yapılışı ve class, java ve jar dosyalarının gösterilmesi

23,419 Okunma Henüz yorum yapılmamış 27/10/2008 22:00:38

Yükleniyor...