6. bölüm diziler

Upload: akin-kaldiroglu

Post on 08-Apr-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 6. Blm Diziler

    1/21

    Akn Kaldrolu Java le Nesne Merkezli Programlama

    www.javaturk.org Mays 2011

    http://www.javaturk.org/http://www.javaturk.org/
  • 8/6/2019 6. Blm Diziler

    2/21

    Kk Bir KonuBu dosya ve beraberindeki tm, dosya, kod, vb. eitim malzemelerinin tmhakk Akn Kaldroluna aittir. Bu eitim malzemelerini kiisel bilgilenme ve geliiminiz amacylakullanabilirsiniz ve isteyenleri http://www.javaturk.org adresine ynlendirip,bu malzemelerin en gncel hallerini almalarn salayabilirsiniz.

    Yukarda bahsedilen ama dnda, bu eitim malzemelerinin, ticariolsun/olmasn herhangi bir ekilde, toplu bir eitim faaliyetinde kullanlmas,bu amaca ynelik olsun/olmasn baslmas, datlmas, gerek ya dasanal/Internet ortamlarnda yaynlanmas yasaktr. Byle bir ihtiya halindeltfen benimle, [email protected] adresinden iletiime gein.

    Bu ve benzeri eitim malzemelerine katkda bulunmak ya da dzeltme veeletirilerinizi bana iletmek isterseniz, ok sevinirim. Yukarda verdiimadresten bana ulaabilirsiniz. Bol elenceli ve bol Javal gnler dilerim.

    2www.javaturk.org

    http://www.javaturk.org/mailto:[email protected]:[email protected]://www.javaturk.org/
  • 8/6/2019 6. Blm Diziler

    3/21

    Torbalar (Collections)Btn dillerde olduu gibi Javada da, birden fazla basitdeikeni ya da nesneyi ynetmeyi salayan torba (collection ) yaplar vardr.

    Javann java.util paketinde ok yetenekli bir torba erevesi(collection framework) vardr,

    Bu torbalar ileride ayr bir blmde ele alacaz.

    Bu blmde, bu yetenekli torbalardan nce, en temel torbayaps olan, diziyi (array) ele alacaz

    3www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    4/21

    Dizi (Array)Javada diziler, belli sayda ve ayn tipten yani homojen olanelemanlar (ilkel ya da referans) sral bir ekilde tutan veriyaplardr. Javada diziler, nesnedirler. Dizilerin iki kst vardr:

    Uzunluklar sabittir ve ve bu bilgi oluturulurken bilinmelidir. Tek bir tipten olan elemanlar saklayabilirler, yani diziler,homojen veri yaplardr.

    Bu iki ksttan dolay diziler hzldrlar ama kullanmlarndaskntya sebep olabilirler. Diziler, ilkel ya da referans tipten verileri tutabilirler.

    4www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    5/21

    Dizi Tantm Dizilerin tipi vardr ve bu tip aslnda, dizi iinde saklanacakelemanlarn tipidir. Dizi tantm, referans deikeni tantm gibidir, sadecediziyi gstermek zere [] kullanlr.

    [] iaretini nerede olduunun nemi yoktur:

    5www.javaturk.org

    ElementType[] arrayName;ya da

    ElementType [] arrayName;ya daElementType []arrayName;ya daElementType arrayName[];

  • 8/6/2019 6. Blm Diziler

    6/21

    Dizi Tanmlama Diziyi tanmlamak iin dizinin boyutuna ihtiya vardr. Dizinin boyutu int tipinde ( long olamaz) bir sabite ya dadeikendir.

    Bir dizi en az 0 boyutunda olabilir.

    Bu ekilde belirtilen sayda odaya/hcreye (cell) sahip olanbir dizi nesnesi oluturulur. Kurucu ars tanmda yaplmaz, bu ary JVM kendisihalleder.

    6www.javaturk.org

    ElementType[] arrayName = new ElementType[noOfElements];ElementType arrayName[] = new ElementType[noOfElements];

    int[] intArray = new int[20];Pizza[] pizzas = new Pizza[5];Student students[] = new Student[5000];

  • 8/6/2019 6. Blm Diziler

    7/21

    Dizi NesneleriDiziler birer nesnedirler.

    Tanmlanan dizi deikeni de aslnda, dizi nesnesinigsteren bir referanstr.

    Diziler zerinde uzunluunu yani dizinin oda saysn verenint tipinde bir alan bulunur:

    length

    7www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    8/21

    Dizi Elemanlarnn lk Deeri Bir dizi oluturulduunda, odacklardaki elemanlar, dizinintipinin varsaylan deerine sahip olur.

    Bu deer boolean iin false, dier yedi saysal basit tip iinise 0n bir versiyonudur.

    Referans tipler iin ise, varsaylan deer null dr.

    Dolaysyla bir dizi nesnesi oluturmak ile o dizininodacklarnn iine deer atamak farkl eylerdir.

    Salkl bir dizi yaps iin dizinin odacklar varsaylandeerde braklmamal ve ilk deer atanmaldr.

    8www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    9/21

    Dizi Elemanlarna Eriim Dizi elemanlarna, dizinin oda numaras ya da indisi (index)ile eriilir.

    Oda numaras, 0dan balar ve dizinin uzunluunun bireksiine kadar ( length-1 ) devam eder.

    9www.javaturk.org

    int i = intArray[intArray.length - 1];Pizza pizza = pizzas[2]; // null

  • 8/6/2019 6. Blm Diziler

    10/21

    Diziye lk Deer Atama I Dizideki odacklara ilk deer atamann ilk yolu, odacklaratek tek indisleriyle ulaarak atama yapmaktr.

    Bu durumda for ya da while dngs kullanlr. Oda numarasyla odalara tek tek ulalrken snr deer olanlength-1 e dikkat edilmesi gereklidir.

    10www.javaturk.org

    for (int i = 0; i < intArray.length; i++) {Random r = new Random();int randomInt = r.nextInt();int sayi = randomInt % 100;intArray[ i] = sayi;

    }

  • 8/6/2019 6. Blm Diziler

    11/21

    Diziye lk Deer AtamaIIDizioluturulurken iinde saklanacak veriler biliniyorsa,bu veriler {} iinde virgl ile ayrlarak sral olarakverilebilir.Bu tip ilk deer vermede new anahtar kelimesikullanlmaz.

  • 8/6/2019 6. Blm Diziler

    12/21

    ArrayDemo.java

    12www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    13/21

    Oda Numaralar Dizilerin odalarna eriim int cinsinden deiken ya da birsabite ile olur.

    Oda eriiminde long kullanlamaz ama int e otomatikolarak evrilen byte , short ve char kullanlabilir.

    Dizi oluturulurken, boyut olarak negatif rakam verilemez. Bu durumda java.lang.NegativeArraySizeException frlatlr.

    Dolaysyla ancak 2^31 odackl bir dizi oluturulabilir.

    Odacklara eriimde de 0dan kk veya length-1 denbyk bir indis kullanlmas halinde java.lang.ArrayIndexOutOfBoundsException frlatlr.

    13www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    14/21

    ok Boyutlu Dizilerok boyutlu diziler Javada dizi iinde dizi yaplardr. Dizinin her bir odasna bir baka dizi koyarak elde edilir. Matris gibi ok boyutlu yaplar ifadede kullanlr.

    ki tr tanmlama da ok boyutlu dizilerde geerlidir Tanmlanan esas ya da ilk dizinin boyutu verilmelidir. dizilerin boyutlarna tanmlama srasnda ihtiya yoktur.

    ok boyutlu dizilerin ilenmesi iin i ie boyut says kadardngye ihtiya vardr.

    14www.javaturk.org

    int[][]coordinates = new int[3][4];ElementType arrayName[] = new ElementType[noOfElements];

  • 8/6/2019 6. Blm Diziler

    15/21

    MultiDimArray.java

    15www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    16/21

    Array Snf java.util paketindeki Arrays snf, dizilerle ilgili bir ka tanekolaylk salayc metota sahiptir:

    binarySearchcopyOf copyOfRangefillsort

    16www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    17/21

    ArraysDemo.java

    17www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    18/21

    zetBu blmde veri yaplarnn en basiti olan dizileri grdk.

    Tek boyutlu ve ok boyutlu dizilerin nasl ileneceinirendik.

    java.util.Arrays snfnda bulunan kolaylk metotlarn dailedik.

    18www.javaturk.org

  • 8/6/2019 6. Blm Diziler

    19/21

    www.javaturk.org19

  • 8/6/2019 6. Blm Diziler

    20/21

    UygulamalarGirilen bir sayya kadar olan asal saylar Sieve of Eratosthenesin algoritmasn kullanarak bulunuz.

    Algoritma hakkda bilgi iinhttp://en.wikipedia.org/wiki/Sieve_of_Eratosthenes adresini

    kullanabilirsiniz.

    20www.javaturk.org

    http://en.wikipedia.org/wiki/Sieve_of_Eratostheneshttp://en.wikipedia.org/wiki/Sieve_of_Eratostheneshttp://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
  • 8/6/2019 6. Blm Diziler

    21/21

    UygulamalarAadaki arayz yerine getiren bir yn (stack) snf yazn:

    21www javaturk org

    // Default maximum stack sizepublic static final int MAX_STACK_SIZE = 10;

    // Queue manipulation operations. Put element on the toppublic void push(String newElement) {}

    // Pop element from the top

    public String pop() {return "";}

    // Remove all elements from stackpublic void clear() {}

    // Stack status operations

    // Is stack empty?public boolean isEmpty() {return false;}

    // Is stack full?public boolean isFull() {return false;}

    // How many elements in stack?public int size() {return 0;}

    // Capacity of stack?public int getCapacity() {return 0;}

    // Outputs the elements in the stack. For testing/debugging purposes only public void showElements() {}