0Pricing
Android Academy · Pelajaran

Tipe Nullable vs Non-Null

Penanda tipe ?.

Tipe Nullable vs Non-Null adalah pelajaran Android 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 Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.

Mengapa Keamanan Null Penting

Banyak kerusakan pada aplikasi Android berasal dari satu kesalahan: menggunakan nilai yang sebenarnya tidak ada. Dalam bahasa lain, hal ini menjadi NullPointerException yang ditakuti saat runtime.

Kotlin menangani hal ini saat kompilasi. Sistem tipe melacak nilai mana yang mungkin berupa null dan mana yang tidak mungkin. Pelajaran ini memperkenalkan dasar sistem tersebut.

Tipe Non-Null

Secara default, tipe Kotlin tidak dapat menyimpan null. String selalu menunjuk ke string yang nyata.

Jika Anda mencoba menetapkan null kepadanya, kode tersebut bahkan tidak akan dikompilasi. Inilah perilaku aman secara default.

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

Null Ditolak

Perhatikan apa yang terjadi saat Anda mencoba memasukkan null ke tipe non-null.

Kompilator langsung menghentikan Anda. Anda tidak pernah mencapai runtime dengan kesalahan tersembunyi.

val name: String = null  // Compile error:
// Null can not be a value of a non-null type String

Tipe Nullable dengan ?

Terkadang suatu nilai memang mungkin tidak ada, seperti nama tengah opsional milik pengguna. Anda dapat mengizinkannya dengan menambahkan ? ke tipe tersebut.

String? dapat menyimpan string nyata atau null. Tanda tanya menandai tipe tersebut sebagai nullable.

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

Dua Tipe yang Berbeda

String dan String? bukan tipe yang sama. Tipe kedua lebih luas karena mencakup nilai null.

Perbedaan inilah yang memungkinkan kompilator melindungi Anda. Kompilator mengetahui dengan tepat di mana null dapat muncul.

val sure: String = "hello"
val maybe: String? = "hello"
// maybe could later be null; sure never can

Anda Tidak Dapat Menggunakan Nullable Secara Langsung

Kompilator tidak akan mengizinkan Anda memanggil metode pada nilai nullable tanpa memeriksanya terlebih dahulu.

Karena middleName dapat berupa null, memanggil .length padanya merupakan kesalahan kompilasi. Anda harus menangani kasus null tersebut.

val middleName: String? = null
println(middleName.length)
// Error: only safe (?.) or non-null (!!) calls allowed

Memeriksa dengan if

Cara paling sederhana untuk menggunakan nilai nullable adalah memeriksanya dengan kondisi if.

Di dalam cabang yang membuktikan bahwa nilainya bukan null, Kotlin secara cerdas mengubahnya menjadi tipe non-null, sehingga .length dapat digunakan.

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

Konversi Cerdas

Setelah pemeriksaan null berhasil, kompilator mengingat bahwa nilainya bukan null selama sisa blok tersebut. Ini disebut konversi cerdas.

Anda tidak menulis konversi apa pun. Kotlin melacaknya secara otomatis untuk Anda.

fun describe(s: String?) {
    if (s == null) return
    // s is now treated as String here
    println("Length is " + s.length)
}

Parameter Fungsi

Apakah suatu parameter nullable merupakan bagian dari kontrak fungsi. Parameter non-null menjanjikan kepada pemanggil bahwa parameter tersebut tidak akan pernah menerima null.

Parameter nullable menandakan bahwa input yang tidak ada memang diharapkan dan ditangani.

fun greet(name: String) {
    println("Hi, " + name)
}
// greet(null) would not compile

Tipe Pengembalian Dapat Berupa Nullable

Fungsi dapat mengembalikan null untuk menandakan bahwa tidak ada yang ditemukan. Tandai tipe pengembaliannya dengan ?.

Dengan demikian, pemanggil mengetahui bahwa hasil harus diperiksa sebelum digunakan.

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

Gunakan Non-Null sebagai Default

Aturan yang baik: utamakan tipe non-null. Tambahkan ? hanya jika suatu nilai memang dapat tidak ada.

Hal ini membuat kode Anda tetap konsisten. Semakin sedikit tipe nullable yang Anda miliki, semakin sedikit pemeriksaan null yang diperlukan nanti.

// Prefer this:
val score: Int = 0
// Over this, unless null is meaningful:
val maybeScore: Int? = null

Pemeriksaan Cepat

Uji pemahaman Anda tentang tipe nullable dan non-null.

Ringkasan

Tipe Kotlin secara default bersifat non-null dan menolak null saat kompilasi. Tambahkan ? untuk menjadikan suatu tipe nullable ketika suatu nilai mungkin tidak ada.

Anda tidak dapat menggunakan nilai nullable secara langsung. Pemeriksaan null mengubahnya secara cerdas menjadi non-null, sehingga Anda dapat menggunakannya dengan aman. Selanjutnya Anda akan mempelajari cara yang lebih singkat untuk menangani nullable.

Pertanyaan yang Sering Diajukan

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

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

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

Penanda tipe ?. Kamu berlatih Android 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 Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android 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 vs 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 Android Academy ini?

Ya. Setiap pelajaran Android 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 vs Non-Null
  2. Pemanggilan Aman dan Elvis
  3. Fungsi Scope let, also, dan
  4. Menghindari NullPointerExceptions
← Kembali ke Android Academy