Kotlin’de Değişkenleri Nasıl Tanımlarız? val ve var Arasındaki Fark Nedir?
Kotlin’de değişken tanımlarken iki anahtar kelime kullanılır: val
ve var
. Bu iki kelime arasındaki temel fark, değişkenin değerinin değiştirilip değiştirilemeyeceği ile ilgilidir.
val
: Bu anahtar kelime ile tanımlanan bir değişken immutable (değişmez) olarak kabul edilir. Yani, bir kez atandığında değeri değiştirilemez.val
ile tanımlanan değişkenler, sabit değerler veya bir kez atanıp bir daha değiştirilmesi gerekmeyen değişkenler için idealdir. Örneğin:val pi = 3.1
- Bu durumda
pi
değişkenine 3.14 değeri atanır ve bu değer, program boyunca değiştirilemez. var
: Bu anahtar kelime ile tanımlanan bir değişken mutable (değiştirilebilir) olarak kabul edilir. Yani, atanan değer gerektiğinde değiştirilebilir. Örneğinvar count = 0 count = 1
- Bu örnekte
count
değişkeni önce 0 olarak atanmış, ardından 1 olarak güncellenmiştir.
Kotlin’de Nullable Türler ve Safe Call Operatörleri Nasıl Kullanılır?
Kotlin, NullPointerException
hatalarını önlemek için güçlü bir null safety
mekanizması sunar. Bu mekanizma sayesinde, bir değişkenin null
değer alıp almayacağı belirli hale getirilir.
- Nullable Türler: Bir değişkenin
null
değer alabileceğini belirtmek için türün sonuna?
işareti eklenir. Örneğin: var name: String? = null
- Bu durumda,
name
değişkeni ya birString
değeri ya danull
olabilir. Eğer bu?
işareti kullanılmazsa, Kotlin derleyicisinull
atamasına izin vermez. - Safe Call Operatörü: Bir nullable tür üzerinde işlem yaparken
?.
operatörü kullanılarak,null
kontrolü manuel olarak yapılmadan güvenli bir çağrı yapılabilir. Örneğin: val length = name?.length
- Bu durumda, eğer
name
null
iselength
değişkeni denull
olur. Eğername
null değilse,length
değişkeniname
'in uzunluğunu alır. Bu sayedeNullPointerException
hatalarının önüne geçilmiş olur.
Kotlin’de data class
Nedir ve Ne Zaman Kullanılır?
Kotlin’de data class
lar, veriyi temsil eden sınıflar için kullanılır ve otomatik olarak bazı işlevler sağlar. Bu işlevler arasında equals()
, hashCode()
, toString()
, copy()
ve componentN()
gibi metotlar bulunur.
- Örnek:
data class User(val name: String, val age: Int)
- Bu örnekte
User
adlı birdata class
tanımlanmıştır. Bu sınıf, iki temel özellik olanname
veage
'i içerir.data class
’lar, özellikle veri taşımak veya veriyi modellemek için kullanıldığında çok yararlıdır.copy()
metodu, mevcut bir nesnenin bir kopyasını oluştururken sadece belirli alanları değiştirmek için kullanışlıdır: val user1 = User("Alice", 25) val user2 = user1.copy(age = 26
- Bu kodda,
user1
'in bir kopyası oluşturulmuş ve sadeceage
değeri 26 olarak değiştirilmiştir.
Ekstra Bilgiler
Sealed Class: Kotlin’de sealed class
, belirli bir hiyerarşideki sınıfların oluşturulmasını sağlar. Bu sınıflar, sadece aynı dosyada tanımlanabilir. Bu sayede, belirli bir sınıf hiyerarşisini kapalı tutmak ve dışarıdan genişletilmesini önlemek için kullanılır.
Enum Class: enum class
lar, sabit değerler kümesini temsil eder. Örneğin, bir haftanın günlerini temsil etmek için kullanılabilir:
enum class DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY