Kotlin’de Null Kavramı

Merhabalar, bugün sizlere çoğu programlama dilinde sıklıkla karşımıza çıkan null kavramından bahsedeceğim.


Null Kavramı

Bilgisayar sektöründe milyar dolarlık bir hatanın sebebi olan null ifadesi değeri olmayan bir değerdir. Bu kadar zarara neden olduğunu null değerini bulan kişi Tony Hoare söylemiştir. Tony Hoare nesne tabanlı bir dilde referanslar için ilk kapsamlı türü tasarlarken, referansların tümünün güvenli olmasını arzu ediyordu. Null referansı 1965 yılından bu yana milyar dolarlık zararlara yol açtı.

Null bilgisayar sektöründe bir değer olarak kabul edilmektedir. Null ifadesi aslında değeri olmayan bir değerdir. Karmaşık bir yapı olan null böyle tuhaf bir şey 🙁 Sıklıkla yapılan bir hata null “boş değer” değildir. Bilgisayarda boşluk bir değer olarak kullanılır. Null, boşluktan farklı bir değerdir. Yani değer olmayan bir değerdir.

Null ifadesi birçok sistem açığına sebep olmakla beraber hala birçok programlama dilinde bulunmaktadır. Java, C++, C# gibi gelişmiş dillerde bulunur.

Kotlin programlama dilinde de null değeri kullanılır. Farklı olarak Java’da olduğu gibi herhangi bir nesneye doğrudan null değeri verilemez. Bir nesne veya değişkenin null değerini alabilmesi için daha önceden belirlenmesi gerekmektedir. ?(Soru işareti) karakterini kullanarak o işlemi yapabiliriz.


Kotlin ile Null Değerinin Kullanımı

Kotlin programlama dilinde null değerin doğru ve hatalı kullanımını örnek vererek açıklayacağım.

fun main() {
    
    // bir degisken null olabilmesi icin ? karakteri kullanılır.
    var name : String? = null // kullanım dogru
    
    // Null can not be a value of a non-null type String
    var surname : String = null // kullanım yanlıs
}

Kotlin’de null değer tanımlarken ? işareti kullanıması gerekir. Kullanılmazsa IDE “Null can not be a value of a non-null type String” verir.

Kotlin ile bu zorunluluk kalkması yerinde bir hamledir. Eğer null ifadesi bir değer değilse bu değer Int, Double, Float, String ve Char gibi tiplere sahip olan değişken veya nesnelere neden değer atayalım. Bu zorunluluk null değerden dolayı bir nebze hatalarıda azaltacaktır.


Kotlin programlama dilinde null değer alabilen değişkenler üzerinde çeşitli işlemler yaparken bazı kurallara uyulması gerekir. Örnek olarak null değer alabilen bir değişkendeki karakter sayısını öğrenebilmek için aşağıdaki örneği incelemenizi tavsiye ederim :

fun main() {

    var name : String? = null
    name = "Halil"
    var surname : String = "Özel"

    // null deger alan name degiskenin veri uzunlugunu ogrenmek icin ? kullanılmalıdır.
    println(name + "'de karakter sayısı : "+ name?.length) // Safe yontemdir.

    // null deger almayan degiskenleri kullanarak uzunluk ogrenme
    println(surname + "'de karakter sayısı : "+ surname.length)
}
Halil'de karakter sayısı : 5
Özel'de karakter sayısı : 4

Null değer alabilen bir değişkende null değerin olmasını istemiyorsanız !! karakterini kullanmalısınız.

fun main() {

    var name : String? = "Halil"
    var surname : String? = null

    // name degiskeni deger olarak null alabilir. Null deger olup olmadıgını kontrol etmek icin
    // !! karakterini kullanırız. Bu operator null deger alabilen bir degiskende null olması istenmedigi
    // zamanlarda kullanılır.
    println(name + "'de karakter sayısı : "+ name!!.length) // Safe yontemdir.

    // surname icinde null deger oldugu icin hata verir. 
    // Eger surname icinde icinde null deger olmasaydı hata vermezdi.
    println(surname + "'de karakter sayısı : "+ surname!!.length)
}

İkinci kullanımda hata vermektedir.


Evet, bu şekilde null değerini tanıyıp, Kotlin ile kullanımını görmüş olduk. Gelecek yazılarda görüşmek üzere 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir