Belajar Kotlin - Kotlin Syntax & Basic Constructs
Episode 3 of 23

Belajar Kotlin - Kotlin Syntax & Basic Constructs

Episode ini menguasai sintaks inti Kotlin: deklarasi val dan var, tipe data dan string templates, control flow dengan if dan when, loop dan ranges, fungsi dengan default arguments, serta extension functions dan infix notation.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Arsitektur Kotlin sudah kalian pahami di episode 2. Sekarang waktunya naik satu tingkat: menguasai sintaks yang akan kalian tulis setiap hari. Episode 3 membahas variabel, tipe data, string templates, control flow, fungsi, hingga extension functions dan infix notation.

Perbedaan terbesar dari Java akan terasa di sini: Kotlin merancang sintaks agar ekspresif dan ringkas. if bisa menjadi ekspresi, when menggantikan switch yang jauh lebih kuat, dan fungsi bisa punya default arguments yang menghilangkan overload boilerplate.

Setiap konsep di episode ini langsung dipakai di semua episode berikutnya, jadi pastikan kalian benar-benar memahaminya sebelum lanjut.

Variabel dan Tipe Data

val vs var

Kotlin membedakan variabel read-only dan mutable: val untuk nilai yang tidak bisa diubah setelah diinisialisasi, dan var untuk nilai yang bisa diubah. Biasakan memakai val sebanyak mungkin — kode lebih aman dan mudah diprediksi:

Kotlinval dan var
val nama = "Arman"
var umur = 26
umur = 27

Deklarasi di atas: nama tidak bisa diubah setelah diinisialisasi, sementara umur bisa. Compiler akan menolak kalau kalian mencoba menugaskan ulang variabel val — perlindungan yang mencegah bug di tahap kompilasi.

Tipe Data Dasar dan String Templates

Tipe dasar Kotlin meliputi Int, Long, Double, Float, Boolean, Char, dan String. String templates memungkinkan menyisipkan ekspresi langsung ke dalam teks:

KotlinString templates
val produk = "kopi"
val harga = 15_000
println("Harga $produk adalah $harga rupiah")
println("Harga total: ${harga * 2}")

Sintaks $produk menyisipkan nilai variabel, sedangkan ${harga * 2} menyisipkan hasil ekspresi. String templates ini jauh lebih nyaman daripada concatenation dengan tanda plus.

Control Flow

if sebagai Ekspresi

Di Kotlin, if adalah ekspresi yang mengembalikan nilai — tidak seperti Java yang hanya statement:

Kotlinif sebagai ekspresi
val nilai = 75
val status = if (nilai >= 60) "Lulus" else "Tidak lulus"
println(status)

Karena if mengembalikan nilai, kalian bisa menugaskannya langsung ke variabel. Tidak ada operator ternary di Kotlin — if ekspresi menggantikannya dengan lebih jelas.

when sebagai Pengganti switch

when jauh lebih kuat dari switch di Java: bisa mencocokkan nilai, range, tipe, dan kondisi tanpa memerlukan break:

Kotlinwhen dengan range
val skor = 85
when (skor) {
    in 90..100 -> println("Sempurna")
    in 75..89 -> println("Bagus")
    in 60..74 -> println("Cukup")
    else -> println("Perlu belajar lagi")
}

Sintaks in 90..100 memakai range yang menulis rentang angka secara ringkas. when mengevaluasi cabang yang cocok, dan cabang else menangani semua kasus lain.

Loop dan Ranges

Kotlin memakai for dengan iterasi yang bersih:

KotlinLoop dan range
for (i in 1..5) {
    println(i)
}
for (i in 10 downTo 1 step 2) {
    print("$i ")
}
while (true) {
    println("loop sampai break")
    break
}

Range 1..5 mencakup angka 1 sampai 5, 10 downTo 1 berjalan mundur, dan step 2 melompat dua angka. Kombinasi ini menulis loop yang ekspresif tanpa boilerplate.

Fungsi

Default Arguments dan Named Parameters

Fungsi di Kotlin bisa punya nilai default sehingga pemanggil bisa mengabaikan parameter opsional. Named parameters membuat pemanggilan lebih terbaca:

KotlinDefault dan named arguments
fun buatEmail(penerima: String, subjek: String = "Tanpa judul", cc: String? = null): String {
    return "Email untuk $penerima, subjek $subjek, cc $cc"
}
 
val email = buatEmail(penerima = "user@example.com", subjek = "Halo")

Pemanggil di atas memakai named arguments dan hanya menyebut dua dari tiga parameter — yang lain memakai nilai default. Ini menggantikan banyak overload yang biasanya ditulis di Java.

Single-expression Functions

Untuk fungsi sederhana, Kotlin mengizinkan body berupa ekspresi tunggal tanpa kurung kurawal:

KotlinSingle-expression function
fun luasPersegi(sisi: Int): Int = sisi * sisi
 
fun sapa(nama: String): String = "Halo, $nama!"

Fungsi di atas mengembalikan hasil ekspresinya langsung. Dengan type inference, tipe kembalian bisa dihilangkan untuk fungsi single-expression, membuatnya semakin ringkas. Seluruh contoh di episode ini bisa kalian uji dengan kotlinc Main.kt -include-runtime -d main.jar lalu menjalankan JAR yang dihasilkan.

Extension Functions dan Infix Notation

Menambah Fungsi pada Tipe yang Ada

Extension functions memungkinkan menambah fungsi ke sebuah tipe tanpa mengubah definisi aslinya. Ini adalah salah satu fitur yang paling dipakai di seluruh ekosistem Kotlin:

KotlinExtension function
fun String.hitungKata(): Int = this.split(" ").size
 
val kalimat = "belajar kotlin itu menyenangkan"
println(kalimat.hitungKata())

String.hitungKata() memperlakukan String seolah memiliki fungsi hitungKata. Receiver this di dalam body merujuk ke String yang dipanggil. Extension functions ini akan kalian temui di banyak library, termasuk kotlinx dan Android.

Infix Notation

Fungsi yang dideklarasikan dengan kata kunci infix bisa dipanggil tanpa tanda titik dan kurung, menciptakan sintaks yang mirip bahasa alami:

KotlinInfix function
infix fun Int.kali(angka: Int): Int = this * angka
 
val hasil = 6 kali 7
println(hasil)

Pemanggilan 6 kali 7 terlihat seperti kalimat. Infix notation berguna untuk fungsi yang membaca alami seperti ini, dan dipakai pada operasi seperti map dengan pasangan key-value di episode 5.

Penutup

Episode 3 melengkapi bekal sintaks inti kalian: val dan var, string templates, if dan when sebagai ekspresi, loop dengan ranges, fungsi dengan default arguments, serta extension functions dan infix notation. Semua ini adalah alat yang akan kalian pakai di setiap episode berikutnya.

Inti yang harus dibawa pulang:

  • Pakai val secara default, var hanya jika benar-benar perlu.
  • if dan when adalah ekspresi yang bisa mengembalikan nilai.
  • String templates memakai $variabel dan ${ekspresi}.
  • Default arguments menghilangkan kebutuhan overload berulang.
  • Extension functions menambah fungsi pada tipe tanpa mengubah definisi aslinya.
  • Infix notation membuat pemanggilan fungsi membaca seperti kalimat.

Di episode 4 selanjutnya kita akan membahas classes, objects, dan OOP — deklarasi class, constructor dan properties, visibility modifiers, data classes, sealed classes, inheritance, interface, hingga companion objects dan pola singleton. Ini saatnya membangun dunia objek kalian dengan Kotlin.