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 nullval 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.lengthpadaString?→ 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 sebagaiString
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
- Tipe Nullable dan Non-Null
- Pemanggilan Aman dan Elvis
- Operator !!
- Tipe Platform