Kotlin Dersleri – Kotlin Diziler (Array)

Java Kotlin Eğitimi

Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Kotlin Dersleri serimize bu dersimizde Kotlin Diziler kullanımından bahsedeceğiz.

Dizi(Array), aynı tipten(String ,Int, Double ve ya herhangi bir oluşturacağımız Class tipi) çok sayıda veriyi (belirlediğimiz sayıda)  bir arada saklayan veri yapısına dizi(Array) adı verilmektedir.

Neden kullanırız derseniz basit bir örnekle 10 tane sayının ortalamasını alacağız. Dizi kullanmadan bunu 10 tane farklı int değişken tanımlayıp tek tek toplayıp sonra 10’a bölerek bulabiliriz. Fakat bu çok zor bir kullanım ve daha büyük rakamlarda neredeyse imkansız bir hal alabilir. İşte bu sorunu Dizi kullanarak çözebiliriz.

Kotlin Diziler (Dizi Tanımlama)

Dizi’yi val diziAdi = Array(diziUzunluğu){başlangıç değerleri}; şeklinde oluşturabiliriz.

Örnek:

Yukarıda gördüğünüz gibi dizilerin uzunluklarını 10 olarak belirledik ve dizilerin tiplerine göre hepsine başlangıç(initial) değer verdik. Verdiğimiz bu initial değerler oluşturulan dizinin tüm elemanlarına değer olarak verildi.

Not : Burda bilmemiz gereken önemli bir nokta dizinin boyutunu diziyi oluşturduktan sonra değiştiremiyoruz. Ne dizinin boyunu arttırabilir ne de azaltabiliriz. Biz bir diziyi oluşturduğumuz an verdiğimiz uzunluğa göre bellekte yer ayrılıyor ve dizinin uzunluğu hep sabit kalıyor.

Diziye Değer Atama:

Aşağıda diziye değer atamanın 2 farklı yolunu göstereceğim.

1.yol:

2.yol 

set() metotu

 

Yukarıda oluşturduğumuz mobilhanemListe dizimize değerler atadık. Dikkat ettiyseniz ilk elemana değeri mobilhanemListe[1] ile değilde mobilhanemListe[0]  ve ya mobilhanemListe.set(0,12) şeklinde atadık. Bunun sebebi ise Java’da bir dizideki elemanların sıra numaraları, yani indeksleri 0 dan başlar ve boyutundan 1 eksik olarak biter. Yani 10 elemanlık bir dizinin son elemanına değeri diziAdi[9] = x  şeklinde atayabiliriz. Aşağıda mobilhanemListe dizimizi görüyorsunuz. Gördüğünüz gibi ilk eleman yani 0. indeks 12 değerini tutuyor.

java array indeks

Diziden Değer Okuma

Diziden değerleri diziAdi[indeks]  şeklinde veya diziAdi.get(indeks) şeklinde okuyabiliriz.

veya

Eğer dizinin belli bir indeksine değer ataması yapmadan okumaya kalkarsak, diziyi oluştururken verdiğimiz başlangıç değerini okuruz.

Gördüğünüz gibi biz bir atama yapmadan 2. ve 4.indeksin(beşinci eleman) değeri 5 dönmektedir. Bunun sebebi yukarıda diziyi oluştururken başlangıç değeri veriyor olmamızdır.

Bu dersimde birde dizi boyunu öğrenme işleminden bahsedeceğim. Biz bir diziyi oluştuduğumuz zaman o diziye ait size adında bir int değişken(method değil) otomatik olarak oluşur ve dizinin boyunu tutar.

Yukarıdaki mobilhanemListe dizimizin boyutu 8’dir. Bunu aşağıdaki şekilde öğrenebiliriz.

Arkadaşlar birde şundan bahsetmek istiyorum. Kotlin dilinde JVM’eki primitive type’lar için hazırlanmış Özel bulunmaktadır. Bunların farkı bu dizilerde başlangıç(initial) değer vermemize gerek kalmamaktadır ve performans olarak daha hızlı çalışmaktadırlar. Bu dizileri aşağıda sıralıyorum.

  • ByteArray
  • CharArray
  • ShortArray
  • IntArray
  • LongArray
  • BooleanArray
  • FloatArray
  • DoubleArray

Eğer  Byte,Char,Short,Int,Long,Boolean,Float,Double (JVM’deki primitive tipler) tiplerinden bir array oluşturacaksak bu tipler için oluşturulmuş dizileri kullanmamız performans açısından daha iyi olacaktır.

Dizi oluşturma:

Yukarıda gördüğünüz gibi Int ve ya Double bir array oluştururken onlar için özel hazırlanmış dizileri kullandım. Diziye Değer atama ve değer okuma işlemleri ise normal dizilerden bir farkı bulunmamaktadır.

Bu dersimde dizinin temel mantığından, nasıl oluşturulduğundan, nasıl değer atandığından, değerleri nasıl geri alabileceğimizden, başlangıç değerlerinden ve dizinin boyunu nasıl öğrenebileceğimizden bahsettik. Yani kısaca Kotlin’de ve tüm yazılım dillerinde çok önemli bir yapı olan Dizi‘lere giriş yapmış olduk.

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Kotlin Dersleri için tıklayınız.

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

7 Yorum

  • Merhaba, bu 2 satırın sonuna da “;” (noktalı virgül) neden koydunuz?
    Ben koymadan yaptım ve bir sıkıntı olmadı.

    println(mobilhanemListe[0]); //0. elemanın değerini yazdırıyoruz. Yani ilk eleman
    println(mobilhanemListe[3]); //4. elemanın değerini mobilhanemListe[3] şeklinde yazdırıyoruz.

    Konsol Çıktısı:
    12
    19

    • Noktalı virgüller Java’dan gelen alışkanlıklar. Noktalı virgül kullanmanda herhangi bir sakınca yoktur ama Kotlin dili ihtiyaç duymadığı için noktalı virgüllere kullanmanın bir mantığı yoktur. Bende dersten kaldırıyorum.
      Ama dediğim gibi kullanman bir hataya sebep olmaz.

  • Merhaba,

    val intArray = Array(10){0}
    val stringArray = Array(10){“”}
    val doubleArray = Array(10){1.0}
    val charArray = Array(10){‘A’}

    Bu kod örneğinden yararlanarak kendim farklı bir array oluşturdum:

    fun main (args: Array) {

    val OkulNumaralarım = Array(3) {0}
    OkulNumaralarım[0] = 246
    OkulNumaralarım[1] = 722
    OkulNumaralarım[2] = 1505

    print(OkulNumaralarım[2])

    } Burada ” {0} ” ifadesinin ne işe yaradığını anlayamadım. Yazınızda “Başlangıç Değeri” olarak geçen yer.)
    Ben de kod üzerinde oynayarak oluşacak değişikliklere göre bir anlam çıkarırım diye düşündüm lakin {0} yerine {5} de yazsam hatta {789} bile yazmama rağmen harhangi bir error almadım. O kısım ne işe yarıyor acaba izah edebilir misiniz?

    Teşekkürler.

  • Dizi değişkenleri val ile tanımlanmış yani immutable olması gerekirken neden tekrar atama yapılınca hata vermiyor?

    • val konusunu ilerleyen derslerde (object nedir , mutable object nedir , immutable object nedir) konularına gelince tekrardan anlatacağız. val ile tanımlanan referans immutable ‘dır diyemeyiz , sadece başka bir objeye bağlanamaz.
      val mobilhanemListe = Array(8){0}
      mobilhanemListe = Array(3){5} //yeni Array yaratıp atama yapmaya çalıştığın zaman hata verecektir. Yani val keywordu ile tanımladığın referans başka bir objeye bağlanma şansı bulunmamaktadır. Ama bağlandığı objedeki değerleri değişmektedir. Bunu derslerimizde bu şekilde anlatamadık çünkü yeni başlayan arkadaşlar object nedir , mutable object nedir ,immutable object nedir konularına uzaklar. Bu konuları anlattıktan sonra tekrardan val , var konusuna değineceğiz.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?