0Pricing
Kotlin Academy · Pelajaran

Tipe Nullable dan Non-Null

Dasar-dasar sistem tipe

Tipe Nullable dan Non-Null adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Mengapa Keamanan Null Penting

NullPointerException yang terkenal telah menyebabkan tak terhitung banyaknya program mengalami kerusakan. Kotlin mengatasi masalah ini secara langsung dengan menjadikan kemungkinan null sebagai bagian dari sistem tipe.

Dalam Kotlin, kompilator mengetahui apakah suatu nilai dapat berupa null atau tidak, dan memaksa Anda menangani kemungkinan tersebut sebelum masalah terjadi.

Tipe yang Tidak Bernilai Null

Secara bawaan, setiap tipe dalam Kotlin tidak bernilai null. Variabel bertipe String tidak pernah dapat menyimpan null.

Jaminan ini diberlakukan saat kompilasi, sehingga Anda dapat menggunakan nilainya dengan bebas tanpa pemeriksaan.

fun main() {
    val name: String = "Alice"
    println(name.length)
}

Penetapan Nilai Null Ditolak

Cobalah memasukkan null ke dalam tipe yang tidak bernilai null, dan kompilator akan langsung menghentikan Anda.

Baris di bawah ini akan gagal dikompilasi karena String tidak menerima null:

  • val name: String = null → kesalahan
fun main() {
    val city: String = "Paris"
    // val broken: String = null // compile error
    println(city)
}

Tipe yang Dapat Bernilai Null

Untuk mengizinkan null, tambahkan tanda tanya setelah tipe: String?.

Ini adalah tipe yang dapat bernilai null. Tipe ini dapat menyimpan nilai nyata atau null.

fun main() {
    val maybeName: String? = null
    println(maybeName)
}

Tipe yang Dapat Bernilai Null vs Tidak Bernilai Null

Kedua deklarasi ini terlihat hampir sama, tetapi perilakunya sangat berbeda:

  • val a: String → tidak pernah null
  • val b: String? → mungkin null

Satu tanda ? mengubah seluruh kontrak variabel.

fun main() {
    val a: String = "hi"
    val b: String? = "hi"
    println(a)
    println(b)
}

Kompilator Melindungi Akses ke Nilai yang Dapat Bernilai Null

Anda tidak dapat memanggil metode secara langsung pada nilai yang dapat bernilai null. Kompilator menolaknya karena nilainya mungkin berupa null.

Baris yang diberi komentar di bawah ini tidak akan berhasil dikompilasi:

  • maybe.length pada String? → kesalahan
fun main() {
    val maybe: String? = "text"
    // println(maybe.length) // compile error
    println(maybe)
}

Memeriksa Null

Salah satu cara sederhana untuk menggunakan nilai yang dapat bernilai null adalah pemeriksaan if secara eksplisit.

Di dalam blok if, Kotlin mengetahui bahwa nilainya tidak null dan mengizinkan Anda menggunakannya dengan aman.

fun main() {
    val maybe: String? = "hello"
    if (maybe != null) {
        println(maybe.length)
    }
}

Null pada Parameter Fungsi

Tipe parameter juga mengikuti aturan ini. Parameter bertipe String harus menerima nilai nyata, sedangkan String? menerima null.

Dengan demikian, tanda tangan fungsi menjelaskan sendiri nilai yang dapat diterimanya.

fun greet(name: String?) {
    if (name != null) {
        println("Hello, " + name)
    } else {
        println("Hello, guest")
    }
}

fun main() {
    greet("Mia")
    greet(null)
}

Tipe Kembalian yang Dapat Bernilai Null

Fungsi dapat mengembalikan tipe yang dapat bernilai null untuk menyatakan bahwa hasilnya mungkin tidak ada.

Pemanggil kemudian dipaksa menangani kemungkinan null sebelum menggunakan hasil tersebut.

fun firstChar(text: String?): Char? {
    if (text == null || text.isEmpty()) return null
    return text[0]
}

fun main() {
    println(firstChar("Kotlin"))
    println(firstChar(null))
}

Inferensi Bawaan

Saat Anda menetapkan nilai literal, Kotlin secara otomatis menyimpulkan tipe yang tidak bernilai null.

  • val n = "text" → disimpulkan sebagai String

Untuk menjadikannya dapat bernilai null, Anda harus mendeklarasikan tipe secara eksplisit dengan ?.

fun main() {
    val n = "text" // inferred String (non-null)
    val m: String? = "text" // explicit nullable
    println(n.length)
    println(m)
}

Menggabungkan Semuanya

Sistem tipe membagi nilai menjadi dua kelompok yang jelas:

  • Tidak bernilai null: selalu aman digunakan
  • Dapat bernilai null: harus ditangani sebelum digunakan

Pembedaan ini memindahkan kesalahan terkait null dari kerusakan saat program berjalan menjadi kesalahan saat kompilasi.

fun main() {
    val safe: String = "always here"
    val risky: String? = null
    println(safe.uppercase())
    if (risky != null) println(risky.uppercase()) else println("no value")
}

Uji Cepat

Ujilah pemahaman Anda tentang tipe yang dapat bernilai null dan tipe yang tidak bernilai null.

Ringkasan

Anda telah mempelajari dasar-dasar keamanan null Kotlin:

  • Secara bawaan, setiap tipe tidak bernilai null
  • Menambahkan ? akan membuat tipe yang dapat bernilai null
  • Kompilator memblokir akses yang tidak aman ke nilai yang dapat bernilai null
  • Pemeriksaan if (x != null) memungkinkan Anda menggunakan nilai dengan aman

Selanjutnya Anda akan mempelajari operator ringkas yang membuat penanganan nilai yang dapat bernilai null menjadi mudah.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tipe Nullable dan Non-Null” gratis?

Ya — teks lengkap “Tipe Nullable dan Non-Null” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Tipe Nullable dan Non-Null”?

Dasar-dasar sistem tipe Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Tipe Nullable dan Non-Null” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Tipe Nullable dan Non-Null
  2. Pemanggilan Aman dan Elvis
  3. Operator !!
  4. Tipe Platform
← Kembali ke Kotlin Academy