Tipe Nullable dan Modifier ?
Deklarasikan variabel nullable dan pahami keamanan terhadap null di Kotlin saat kompilasi.
Tipe Nullable dan Modifier ? 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.
Keamanan Null di Kotlin
Kotlin membedakan antara tipe yang dapat menyimpan null dan tipe yang tidak dapat menyimpannya, pada waktu kompilasi. Kompilator mencegah sebagian besar NullPointerExceptions sebelum waktu proses.
Tipe Tidak Bernilai Null
Secara bawaan, tipe Kotlin tidak dapat bernilai null. Jika Anda mencoba menetapkan null, kompilator akan menolaknya.
fun main() {
val name: String = "Ada"
// val nope: String = null // ERROR
println(name)
}Tipe yang Dapat Bernilai Null dengan ?
Tambahkan ? agar null diperbolehkan. Kompilator kini memperlakukan variabel tersebut sebagai nilai yang mungkin tidak ada.
fun main() {
val name: String? = null
println(name) // null
}Memanggil Metode pada Nilai yang Dapat Bernilai Null
Anda tidak dapat langsung memanggil metode pada nilai yang dapat bernilai null tanpa terlebih dahulu menangani kasus null. Kompilator akan menolaknya.
fun main() {
val name: String? = "Bob"
// println(name.length) // ERROR — name might be null
if (name != null) println(name.length) // smart cast
}Konversi Cerdas
Setelah pemeriksaan if (x != null), Kotlin secara cerdas mengonversi x menjadi nilai yang tidak bernilai null di dalam cabang tersebut.
fun main() {
val name: String? = "Alice"
if (name != null) {
println("Length: ${name.length}") // safe, smart-cast
} else {
println("No name")
}
}Parameter Fungsi yang Dapat Bernilai Null
Tandai parameter fungsi sebagai dapat bernilai null ketika parameter tersebut mungkin tidak tersedia. Pemanggil harus memberikan nilai atau null secara eksplisit.
fun greet(name: String?) {
if (name == null) println("Hello, stranger")
else println("Hello, $name")
}
fun main() {
greet("Sara")
greet(null)
}Tipe Pengembalian yang Dapat Bernilai Null
Fungsi yang mengembalikan X? memberi tahu pemanggil bahwa fungsi tersebut mungkin mengembalikan null, sehingga pemanggil harus menanganinya.
fun findUser(id: Int): String? {
return if (id == 1) "Alice" else null
}
fun main() {
val u = findUser(2)
println(u ?: "no user")
}Properti yang Dapat Bernilai Null
Properti kelas juga dapat bernilai null. Hal ini umum terjadi ketika bidang diisi belakangan atau diambil secara opsional.
data class Profile(
val name: String,
val avatarUrl: String?
)
fun main() {
val p = Profile("Lee", null)
println(p.avatarUrl ?: "(no avatar)")
}Koleksi yang Dapat Bernilai Null
Bedakan daftar yang dapat bernilai null List<T>? dari daftar yang elemennya dapat bernilai null List<T?>. Keduanya memiliki arti yang berbeda.
fun main() {
val maybeList: List<Int>? = null
val listOfMaybe: List<Int?> = listOf(1, null, 3)
println(maybeList?.size) // null
println(listOfMaybe.size) // 3
}Perbandingan dengan Java
Tipe Java yang masuk ke Kotlin muncul sebagai tipe platform (String!); Kotlin mempercayai Anda, tetapi tidak menawarkan keamanan null. Jika memungkinkan, selalu beri anotasi pada API Java dengan @Nullable/@NotNull.
fun main() {
val maybeNull: String? = System.getenv("FOO") // null if unset
println("env FOO = ${maybeNull ?: "(unset)"}")
}Mengapa Ini Penting
Keamanan null pada waktu kompilasi mencegah seluruh kategori kerusakan pada waktu proses. Manfaatkan pengubah ?; pengubah ini mendokumentasikan maksud dan memaksa penanganan nilai null.
fun divide(a: Int, b: Int): Int? = if (b == 0) null else a / b
fun main() {
val r1 = divide(10, 2) // 5
val r2 = divide(10, 0) // null — handled at call site
println("$r1, $r2")
}Pemeriksaan Singkat
Apa arti ? di akhir deklarasi tipe?
Ringkasan
Secara bawaan, tipe Kotlin tidak dapat bernilai null. Tambahkan ? untuk mengizinkan null. Kompilator menerapkan penanganan null melalui konversi cerdas, pemanggilan aman, dan operator Elvis, sehingga mencegah sebagian besar NullPointerExceptions sebelum waktu proses.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Tipe Nullable dan Modifier ?” gratis?
Ya — teks lengkap “Tipe Nullable dan Modifier ?” 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 Modifier ?”?
Deklarasikan variabel nullable dan pahami keamanan terhadap null di Kotlin saat kompilasi. 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 Modifier ?” 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 Modifier ?
- Safe Call ?. dan Elvis ?: dalam Kode Nyata
- let, also, dan run dengan Receiver Nullable
- Operator !!: Kapan dan Mengapa Sebaiknya Dihindari