Menu
Coddy logo textTech

Kotlin Cheat Sheet

Son güncelleme

Hello World ve temeller

Bir Kotlin programı üst düzey bir main fonksiyonuyla başlar; sınıf gerekmez.

SözdizimiAnlamı
fun main() { println("Hello") }Programın giriş noktası
println("text")Standart çıktıya bir satır yazdır
print("text")Sonda satır sonu olmadan yazdır
// commentTek satırlık yorum
/* comment */Çok satırlı yorum
val input = readLine()stdin'den bir satır oku (nullable String?)
val line = readln()stdin'den bir satır oku (non-null, Kotlin 1.6+)

Değişkenler (val / var) ve tipler

val'ı tercih et; var'a yalnızca değerin değişmesi gerektiğinde başvur.

SözdizimiAnlamı
val name = "Ada"Salt okunur değişken, tipi String olarak çıkarılır
var count = 0Değiştirilebilir değişken
val age: Int = 30Açık tip belirtimi
Int, Long, Double, FloatSayısal tipler (42, 42L, 3.14, 3.14f)
Boolean, Char, Stringtrue/false, 'a', "metin"
val big = 1_000_000Okunabilir sabitler için alt çizgi
"3".toInt(), "2.5".toDouble()String'i sayıya çevir
42.toString()Sayıdan string'e
const val MAX = 10Derleme zamanı sabiti (üst düzeyde ya da bir object içinde)

String'ler ve şablonlar

String şablonları neredeyse her yerde birleştirmenin yerini alır.

SözdizimiAnlamı
"Hi, $name"String'e değişken ekle
"Total: ${price * qty}"İfade ekle
s.lengthKarakter sayısı
s.uppercase(), s.lowercase()Büyük/küçük harf değiştir
s.trim()Baştaki ve sondaki boşlukları kaldır
s.contains("x"), s.startsWith("a")String içinde ara
s.substring(0, 3)İndeks aralığıyla dilimle
s.split(",")List<String>'e böl
s[0]Belirli indeksteki karakter
"""raw text"""Ham çok satırlı string, kaçış karakteri yok
"%.2f".format(3.14159)Biçimlendirilmiş çıktı (3.14)

Null güvenliği

Bir tip varsayılan olarak null olamaz; null'a izin vermek için ? ekle, derleyici bunu ele almanı zorunlu kılar.

SözdizimiAnlamı
var s: String? = nullNullable tip
s?.lengthGüvenli çağrı: s null ise null döner
s?.length ?: 0Elvis operatörü: null olduğunda yedek değer
s!!.lengthNon-null onayı: s null ise hata fırlatır
if (s != null) s.lengthKontrol içinde non-null'a smart cast
s?.let { println(it) }Bloğu yalnızca null değilse çalıştır
val n = s?.toIntOrNull()Çevir, geçersiz girdide null döndür
lateinit var x: StringSonradan ilklendirilen non-null değişken

Operatörler

OperatörAnlamı
+ - * / %Aritmetik (Int'lerde / tam sayı bölmesidir)
+= -= *= /= %=Birleşik atama
++ --Artırma / azaltma
== !=Yapısal eşitlik (equals çağırır)
=== !==Referans eşitliği (aynı nesne)
< > <= >=Karşılaştırma
&& || !Mantıksal ve / veya / değil
a in 1..10Aralık ya da koleksiyon üyeliği
x as Int, x as? IntDönüşüm / güvenli dönüşüm (başarısızlıkta null)
x is StringTip kontrolü (başarıda smart cast)

Akış kontrolü (if / when)

if ve when birer ifadedir; değer döndürürler.

SözdizimiAnlamı
if (a > b) x else yİfade olarak if (Kotlin'de ?: üçlü operatörü yoktur)
if (c) { ... } else if (d) { ... } else { ... }Zincirleme dallar
when (x) { 1 -> "one"; 2 -> "two"; else -> "other" }Bir değerle eşleştir
when (x) { 1, 2 -> "low" }Bir dalda birden çok değer
when (x) { in 1..9 -> "digit" }Bir aralıkla eşleştir
when (x) { is String -> x.length }Bir tiple eşleştir (smart cast ile)
when { x < 0 -> "neg"; x == 0 -> "zero"; else -> "pos" }Öznesiz when, if/else if gibi
val label = when (x) { ... }İfade olarak when (else gerekir)

Döngüler ve aralıklar

SözdizimiAnlamı
for (i in 1..5)1'den 5'e kapalı aralık
for (i in 1 until 5)1'den 4'e (son hariç)
for (i in 0..<5)Aynısı, açık uçlu aralık sözdizimi (Kotlin 1.9+)
for (i in 10 downTo 1 step 2)Adımlarla geri say
for (item in list)Koleksiyon üzerinde dolaş
for ((i, item) in list.withIndex())İndeks ve eleman birlikte
for (ch in "abc")String'in karakterleri üzerinde dolaş
while (cond) { ... }Doğru olduğu sürece döngü
do { ... } while (cond)En az bir kez çalıştır
break, continueDöngüden çık / sonraki yinelemeye atla
repeat(3) { println(it) }Bloğu n kez çalıştır

Fonksiyonlar

SözdizimiAnlamı
fun add(a: Int, b: Int): Int { return a + b }Fonksiyon tanımla
fun add(a: Int, b: Int) = a + bTek ifadeli fonksiyon, dönüş tipi çıkarılır
fun greet(name: String = "world")Varsayılan parametre değeri
greet(name = "Ada")İsimli argüman
fun log(vararg items: String)Değişken sayıda argüman
fun say(): UnitDönüş değeri yok (Unit isteğe bağlı)
val square = { x: Int -> x * x }Değişkende saklanan lambda
fun String.shout() = uppercase() + "!"Uzantı fonksiyonu
fun apply(f: (Int) -> Int) = f(2)Parametre olarak fonksiyon
list.map { it * 2 }Sondaki lambda, it tek parametredir

Listeler

listOf salt okunurdur; mutableListOf değiştirilebilir.

SözdizimiAnlamı
val nums = listOf(1, 2, 3)Salt okunur liste
val items = mutableListOf("a")Değiştirilebilir liste
nums[0], nums.first(), nums.last()Elemanlara eriş
nums.getOrNull(9)Güvenli erişim, aralık dışında null
items.add("b"), items.remove("a")Ekle / kaldır
items[0] = "z"İndekse göre değiştir
nums.size, nums.isEmpty()Boyut ve boş olma
x in nums, nums.contains(x)Üyelik
nums.indexOf(2)Elemanın konumu, yoksa -1
nums.subList(0, 2)Dilim (son hariç)
nums.take(2), nums.drop(1)İlk n / ilk n hariç hepsi
nums.sorted(), nums.reversed()Yeni sıralı / ters çevrilmiş liste
nums.sum(), nums.average(), nums.maxOrNull()Toplu işlemler
nums.joinToString(", ")Tek string'de birleştir
Pair(1, "a"), 1 to "a", Triple(1, 2, 3)Küçük sabit demetler

Map'ler ve set'ler

SözdizimiAnlamı
val m = mapOf("a" to 1, "b" to 2)Salt okunur map
val mm = mutableMapOf<String, Int>()Değiştirilebilir map
m["a"]Arama (yoksa null)
m.getOrDefault("z", 0)Yedek değerle arama
mm["c"] = 3Ekle veya güncelle
for ((k, v) in m)Girdileri yapı çözme ile dolaş
m.keys, m.valuesAnahtar / değer koleksiyonları
"a" in mAnahtar üyeliği
val s = setOf(1, 2, 2)Benzersiz değerler kümesi ({1, 2})
mutableSetOf<Int>()Değiştirilebilir set

Koleksiyon işlemleri (lambdalar)

SözdizimiAnlamı
list.map { it * 2 }Her elemanı dönüştür
list.filter { it > 2 }Eşleşen elemanları tut
list.forEach { println(it) }Her elemanla bir şey yap
list.any { it > 2 }, list.all { it > 0 }Herhangi / her eleman eşleşiyor mu
list.count { it % 2 == 0 }Eşleşmeleri say
list.find { it > 2 }İlk eşleşme ya da null
list.sortedBy { it.length }Anahtara göre sırala
list.groupBy { it.first() }Map olarak grupla
list.distinct()Tekrarları kaldır
list.fold(0) { acc, x -> acc + x }Başlangıç değeriyle indirge
list.zip(other)İki listeyi eşleştir
list.flatMap { it.toList() }Dönüştür sonra düzleştir

Sınıflar ve data class'lar

SözdizimiAnlamı
class User(val name: String, var age: Int)Birincil yapıcı ve özelliklerle sınıf
val u = User("Ada", 36)Örnek oluştur (new yok)
u.name, u.age = 37Özellikleri oku / yaz
data class Point(val x: Int, val y: Int)equals, hashCode, toString, copy bedavaya
p.copy(y = 5)Bazı özellikleri değiştirilmiş kopya
val (x, y) = pYapı çözme bildirimi
open class Base, class Sub : Base()Kalıtım (sınıflar varsayılan olarak final)
override fun toString() = "..."Bir üyeyi geçersiz kıl
object Config { val debug = true }Singleton
companion object { fun create() = User("", 0) }Statik benzeri üyeler
enum class Color { RED, GREEN }Enum
sealed class ResultKısıtlı sınıf hiyerarşisi, when içinde eksiksiz
interface Shape { fun area(): Double }Arayüz

Hata yönetimi

SözdizimiAnlamı
try { ... } catch (e: Exception) { ... }İstisna yakala
try { ... } finally { ... }Temizliği her zaman çalıştır
val n = try { s.toInt() } catch (e: NumberFormatException) { 0 }İfade olarak try
throw IllegalArgumentException("bad")İstisna fırlat
require(x > 0) { "x must be positive" }Argüman kontrolü (IllegalArgumentException fırlatır)
check(ready) { "not ready" }Durum kontrolü (IllegalStateException fırlatır)
s.toIntOrNull()Fırlatmak yerine null döndür
runCatching { risky() }.getOrDefault(0)Çağrıyı Result içine sar

Kapsam fonksiyonları

Bir blok içinde nesneyle çalışmak için beş küçük yardımcı.

SözdizimiAnlamı
x.let { it + 1 }it nesnedir, blok sonucunu döndürür
x.run { this + 1 }this nesnedir, blok sonucunu döndürür
x.apply { field = 1 }this nesnedir, nesneyi döndürür
x.also { println(it) }it nesnedir, nesneyi döndürür
with(x) { field }Uzantı değil; this x'tir, blok sonucunu döndürür
x?.let { ... }Deyimsel null kontrolü + kullanım

Aradığın her Kotlin sözdizimi tek sayfada. Bu Kotlin cheat sheet, Android'in ve modern JVM'in büyük kısmının arkasındaki dil için hızlı bir başvuru: değişken tanımlama, null'ları güvenle ele alma, when ile dallanma, aralıklarda döngü, fonksiyon yazma ve listelerle map'lerle çalışma.

Buradaki her şey standart Kotlin'dir; JVM'de, Android'de ve Kotlin Multiplatform'da aynı şekilde çalışır. İhtiyacın olanı kopyala ya da Kotlin playground'da canlı dene: bir parçayı yapıştır, Run'a bas ve çıktıyı tarayıcında gör.

Kotlin cheat sheet SSS

Bu Kotlin cheat sheet ücretsiz mi?
Evet. Bu Kotlin cheat sheet tamamen ücretsiz, kayıt gerektirmez. Yer imlerine ekle ve bir when dalına, bir null güvenliği operatörüne ya da bir koleksiyon metoduna bakman gerektiğinde geri dön.
Kotlin'de val ile var arasındaki fark nedir?
val salt okunur bir referans tanımlar: bir kez atanır ve yeniden atanamaz. var yeniden atanabilen değiştirilebilir bir değişken tanımlar. val yalnızca referansı sabitler: val list = mutableListOf(1) listesine hâlâ eleman eklenebilir. Kotlin tarzı her yerde val kullanmak ve yalnızca yeniden atama gerçekten gerektiğinde var'a geçmektir.
Kotlin'de null güvenliği nasıl çalışır?
Tipler varsayılan olarak null olamaz; String asla null tutamaz, String? tutabilir. Derleyici, null durumunu ele almadan nullable bir değer üzerinde metot çağırmana izin vermez: güvenli çağrı (s?.length), Elvis ile yedek değer (s?.length ?: 0), smart cast yapan bir null kontrolü (if (s != null)) ya da son çare olarak değer gerçekten null ise NullPointerException fırlatan s!! non-null onayı.
Kotlin'de ne zaman if yerine when kullanmalıyım?
Bir değeri birden fazla olasılıkla (sabitler, aralıklar, tipler ya da karışımı) karşılaştırdığında when, tek bir evet/hayır koşulu için if/else kullan. İkisi de ifadedir; val label = when (x) { ... } ve val label = if (c) a else b deyimseldir. İfade olarak kullanılan bir when eksiksiz olmalıdır, bu da genellikle bir else dalı eklemek demektir (sealed class'lar ve enum'lar onsuz da eksiksiz olabilir).
Kotlin'i online pratik edebilir miyim?
Evet. Kotlin playground'u aç ve bu cheat sheet'teki herhangi bir parçayı tarayıcında çalıştır; JDK ya da IntelliJ kurmana gerek yok. Yapı istediğinde Coddy'nin ücretsiz etkileşimli Kotlin kursu seni Hello World'den null güvenliğine, when'e, döngülere, fonksiyonlara ve koleksiyonlara götürür ve sonunda ücretsiz bir sertifika verir.
Coddy programming languages illustration

Coddy ile Kotlin öğren

BAŞLA