Konular

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
Java Diziler

Diziler

Diziler aynı veri tipinde birden fazla veriyi barındıran veri tiplerine dizi adı verilir. Örneğin 100 kişinin adını program içinde bir değişkendetutmak için 100 tane String değişken tanımlamak yerine dizi kullanılır.

Dizideki her bir elemana indeks numarası ile erişilir. Mesela notlar değişkeni integer tipinde bir dizi ise notlar[i] ifadesi dizinini. tamsayısını gösterir.

Bir dizi tanımlamak için dizi hangi veri tipinde olacak ise veritipinin adı yazıldıktan sonra “[ ]” eklenir ve dizi değişkeni yazılır. Örneğin tamsayı tipinde dizi tanımlamak için

int[ ] notlar;                                                     //integer tipinde notlar değişken dizisini tanımlar.

Yukarıdaki ifade notlar dizisinin tanımlamasını yapar fakat diziye herhangi bir değer atayamazsınız. Diziye değer atamak için başlatılması gerekir, bu amaçla;

int[ ] notlar;

notlar=new int[5];                                       //new operatörü ile başlatma yapılır

Dizi tanımlaması yaparken kullanılan köşeli parantezler veritipiyerine değişken adından sonra da yazılabilir;

int notlar[ ]=new int[5];


Diziler

int[ ] ciftSayilar=new int[10];

for (int i=0;i<10;i++)
ciftSayilar[i]=i*2;

for (int i=0;i<10;i++)
System.out.println(i + ". sırada: "+ ciftSayilar[i]);
 

/*yukarıdaki kodda dikkat edilmesi gereken dizilerin ilk elemanı 0&#8217;dan başlar, son elemanı ise tanımda belirtilen sayının bir eksiğidir. Yukarıda 0-9 arasında indeks değerleri alır. */

 

Dizi Boyutu

Bir dizideki eleman sayısını bulmak için length özelliği kullanılr. örneğin;

int[ ] notlar=new int[5];
int boyut=notlar.length                                    //boyut=5

dizinin boyutu dizi başlatıldıktan sonra oluşur, örneğin;

 
int[ ] notlar;
int boyut=notlar.length                                 //hata verir.


Dizi Başlangıç Değerleri

Diziler tanımlanırken başlangıç değeri atamak için;
 

int[ ] asalSayilar={ 2, 3, 5, 7, 11, 13 };
 

yukarıdaki ifade 6 elemanlı bir dizi oluşturur ve parantezler içindeki sayıları diziye atar.

Bu dizi oluşturulurken new operatörünün kullanılmasına gerek yoktur. New operatörü diziyi bellekte başlatmak için gereklidir, burada ise dizi başlangıç değerleri atayarak başlatıldığından buna gerek yoktur.


Diziler

Javada 0 elemanlı diziler tanımlayabilirsiniz;
 

int[ ] donusDizi=new int[0];
 

Bu tip bir dizinin kullanım yeri dönüş tipi dizi olan bir metot boş değer döndüreceğinde kullanılabilir.

  Array kütüphanesini kullanmak için java kodunun başlangıcına yazılması gereken satır:

import java.util.*;
 

Dizilerin Kopyalanması

Bir diziyi başka bir diziye kopyalamak için dizi şeklinde tanımlanmış iki değişken birbirine atama yapıldığında her iki deişkende aslında aynı diziyi (belleğin aynı yerini) göstermeye başlar. Bu işlem C’de bir pointerın değerinin bir ka pointera atanması gibidir.

 
int[ ] asalSayilar={ 2, 3, 5, 7, 11, 13 };

int[ ] yeniSayilar=asalSayilar;

yeniSayilar[5]=17;                                           //asalSayilar[5]&#8217;de 17 olur

Bir dizinin kopyasının başka bir dizi değişkeni şeklinde bellekte kopyalanmasını isetersek System sınıfının arraycopy() metodunu kullanırız.

System.arraycopy(HangiDiziden, kaynakBaslangicSirasi, HangiDiziye, hedefBaslangicSirasi, kacTane);


int[ ] asalSayilar = {2, 3, 5, 7, 11, 13};
int[ ] sansliSayilar= {1001,1002,1003,1004, 1005, 1006,1007};

System.arraycopy(asalSayilar, 2, sansliSayilar, 3, 4);

for (int i = 0; i < sansliSayilar.length; i++)
System.out.println(i + ": " + sansliSayilar[i]);

Ekran çıktısı;

0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13


Komut Satırı Parametreleri


Şu ana kadar gördüğümüz bütün java programları main metodu içermekteydi ve bu metotların hepsi String[ ] args parametresi almakta idi.

public static void main(String[] args)

Bu bize programa komut satırından verilen parametrelerin dizi olarak saklandığını ve bu dizinin args adında olduğunu anlatr.


public class Ders5{

    public static void main(String[] args) {

        if (args[0].equals("-h")) System.out.println("Help satırı");
        else if (args[0].equals("-s")){
            System.out.print("Selam, ");     // bütün komut satırı parametrelerini yaz

            for (int i = 1; i < args.length; i++)
            System.out.print(" " + args[i]);
        }
    }
}


Dizilerin Sıralanması


Sayı veritipinden oluşan dizilerin sıralanması için java.util paketindeki Arrays sınıfının sort() metodu kullanılmaktadır.

int[ ] a = new int[10000];
. . .
Arrays.sort(a)

Bu metot birçok durumda çok hızlı sonuçlar veren hızlı sıralama (quicksort) algoritmasın kullanmaktadır.


Dizide arama yapma

Bir sayı dizisinde sayı değeri aramak için Arrays sınıfının binarySearch metodu kullanılır;

static int binarySearch(Xxx[ ] a, Xxx v)

Parametreler:

a:int, long, short, char, byte, boolean, float veya double veritiplerinden birinde tanımlanmış sıralı bir dizi
v: a dizisi ile aynı veri tipinde bir değer

Bu metot binarysearch algoritmasını kullanarak a dizisini tarar ve v’nin bulunduğu yerin indeks numarasnı döndürür. Eğer v’yi bulamaz ise v’nin olması gerektiği yerin bir fazlasının negatif değerini döndürür.

Örneğin -5 dönmüş ise aranan değer sıralı dizide bulunamamıştır, eğer bulunsa idi 4. sırada bulunması gerekirdi.


Dizinin içini doldurmak


Bir sayı dizisinin içini belirli bir değer ile doldurmak için Arrays sınıfının fill() metodu kullanılır.

static void fill(Xxx[ ] a, Xxx v)

Burada a: int, long, short, char, byte, boolean, float veya doubletipinde bir dizi,v: Belirtilen dizi ile aynı veritipinde bir değerdir.

 
int[ ] aramaDizisi=new int[ ];
Arrays.fill(aramaDizisi, 0);
 

Dizileri Karşılaştırmak


İki sayı dizisini karşılaştırmak için

Arrays.equals(birinci dizi[ ], ikinci dizi[ ])

metodu kullanılır, metodun kullanımı şu şekildedir;

int[ ] asalSayilar = {6, 3, 99, 7, 11, 13};
int[ ] dizi2= {6, 3, 99, 7, 11, 13, 17};

System.out.println(Arrays.equals(asalSayilar, dizi2));                    //true yazar


Çokboyutlu diziler

Çokboyutlu diziler matrislerin bilgisayardaki karşılıklarıdır ve birden fazla indeks kullanırlar, örneğin iki boyutlu bir dizi iki boyutlu matris gibidir ve gösterimi şu şekildedir;

int[ ][ ] tablo=new int[3][3] ;
int[ ][ ] sihirliKare={
                                   
{16, 3, 2, 13},
                                    {5, 10, 11, 8},
                                    {9, 6, 7, 12},
                                    {4, 15, 14, 1}
                                };




Javada gerçekte bütün diziler tek boyutludur, örneğin iki boyutlu bir dizi tanımlarsanız bu bellekte tek boyutlu dizilerden oluşan bir dizi olarak saklanır.
Bu bizim dizilerle oynamamızı kolaylaştırır,

Örneğin;

 
int[ ] temp=sihirliKare[1];
sihirliKare[2]=sihirliKare[1];
sihirliKare[1]=temp;                                       //sihirliKare dizisinin 2. ve 1. satırlarının yerlerini değiştirir (büyü bozuldu).
 

Adi Diziler


Javada çok boyutlu dizilerin dizilerden oluşan diziler olarak tanımlanması bize satır boyutları farklı iki boyutlu dizi oluşturma imkanı sağlar.

 
          int NMAX = 5;
          int[][] odds = new int[NMAX+1][];

          for (n = 0; n <= NMAX; n++)
                odds[n] = new int[n+1];

          for (n = 0; n < odds.length; n++)
                  for (k = 0; k < odds[n].length; k++)
                  {
                          odds[n][k] = k;
                  }

          for (int n = 0; n < odds.length; n++)
          {
                  for (int k = 0; k < odds[n].length; k++)
                  { // pad output with spaces
                          String output = " " + odds[n][k]; // make output field 4 characters wide
                          output = output.substring(output.length() - 4);
                          System.out.print(output);
                  }
                  System.out.println();
          }
 

Kaynak Uğur Kahraman

Yorumunuzu Ekleyin
Java Diziler Yorumları +2 Yorum
  • ossi
    1
    ossi
    çok güzel bi paylaşım
    tşkler
    29 Ekim 2010 22:34:20, Cuma
  • bayan mühendis
    1
    bayan mühendis
    çok yararlı venet bi site çok beğendim emeği geçenlere çok teşekkürler
    10 Nisan 2014 23:31:37, Perşembe
Java Değişken Tipleri

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

55,950 Okunma 0 Yorum 04/11/2009 13:11:31

Javada Fonksiyonlar

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

50,344 Okunma 0 Yorum 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,394 Okunma 0 Yorum 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,660 Okunma 0 Yorum 18/10/2007 12:43:49

J2ee, j2se, j2me Nedir?

J2ee,j2se,j2me hakkında bilgi

31,898 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,547 Okunma 0 Yorum 16/10/2007 13:23:36

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.

27,915 Okunma 1 Yorum 14/04/2008 11:01:20

Java 3D

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

24,867 Okunma 0 Yorum 26/01/2009 22:23:10

while döngüsü

Dizilerin olmazsa olmazı

24,729 Okunma 0 Yorum 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,590 Okunma 0 Yorum 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,256 Okunma 0 Yorum 27/10/2008 22:00:38

Yükleniyor...