Bagaimana kabarnya kawan? Semoga sehat selalu, ya! Setelah sekian lama, akhirnya saya bisa menulis lagi untuk blog Dicoding. Untuk itu, saya ingin menyapa kawan-kawan yang sudah mampir di blog ini. Jika saya boleh menebak, kamu pasti developer yang pernah belajar Java dan ingin hijrah untuk belajar Kotlin, bukan? Jika jawabannya adalah iya, kamu datang ke tempat yang tepat! Hal ini karena kita akan membahas secara lebih detail terkait perbedaan syntax (penulisan kode) pada bahasa pemrograman Kotlin dan Java. Mulai dari cara penulisan tipe data, konstanta, dan global variable. Semuanya akan dibahas pada blog kali ini.
Namun, sebelum lanjut lebih dalam, saya ingin memberikan satu fakta yang bisa membuat kamu termotivasi untuk belajar bahasa Kotlin. Faktanya adalah sejak tahun 2019, Google mengumumkan “Kotlin First” untuk pengembangan Android pada acara Google I/O. Apa artinya? Artinya bahasa utama yang digunakan, informasi dokumentasi, dan pengembangan library yang didahulukan adalah bahasa Kotlin.
💻 Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangTak ayal, sampai saat tulisan ini dibuat, 87% dari 1000 aplikasi top di Google PlayStore sudah menggunakan Kotlin. Kamu tentu semakin penasaran kan, mengapa banyak developer yang berbondong-bondong memakai Kotlin? Yuk, kita bahas dari sisi penulisan sintaksisnya satu per satu!
Deklarasi Variabel
Pada bahasa Java, ketika ingin mendeklarasikan variabel, biasanya kamu perlu menuliskan tipe data secara eksplisit seperti ini.
Java | Kotlin |
String nama = “Dico”; //jangan lupa semicolon-nya ya 😀 Int usia = 8; |
val nama: String = “Dico” //Kode : String bisa dihapus var usia = 8 |
Untuk Kotlin, penulisan diawali dengan val dan var.
- Val digunakan untuk variabel yang tidak pernah berubah (read-only)
- Var digunakan untuk variabel yang bisa diubah (mutable)
Berbeda dengan Java, kamu tidak perlu menuliskannya secara eksplisit. Hal ini bisa dilakukan karena Kotlin menggunakan konsep type inference. Artinya, tipe data baru akan diketahui ketika compile time dengan melihat value yang diberikan. Misal, ketika menggunakan tanda “petik dua” berarti ia String, ketika menggunakan tanda ‘petik satu’ berarti ia Char, dan ketika berisi true atau false berarti ia boolean. Berikut ini gambarannya.
1 2 3 4 |
val nama = “Dico” //String var usia = 8 //Int var tinggi = 188.8 //Double var menikah = false //Boolean |
Tipe Data
Secara sekilas tipe data pada bahasa Kotlin dan Java cukup mirip, tetapi sebenarnya ada yang berbeda, lho! Ketahuilah bahwa pada bahasa Kotlin, semuanya adalah object, termasuk tipe data. Oleh karena itu, kamu bisa memanggil fungsi yang sudah disediakan di dalam suatu tipe data seperti berikut.
Java | Kotlin |
StringUtils.upperCase(nama);
usia + 2; |
nama.uppercase()
usia.plus(2) |
Konstanta
Lalu, bagaimana penulisan untuk konstanta? Mari kita lihat contoh berikut.
Java | Kotlin |
public static final double PI = 3.14; | companion object {
const val PI = 3.14 } |
Kotlin tidak mengenal keyword static seperti Java. Sebagai gantinya, kamu bisa menuliskan kode di top level declaration. Jika ingin di dalam suatu class, ia harus terletak di dalam companion object supaya konstanta bisa diakses dari kelas lain.
Nullable Data type
Terakhir, hal yang menarik yang ada di Kotlin adalah kamu bisa membuat Tipe Data yang bersifat Non Nullable maupun Nullable. Tipe data nullable ini ditandai dengan menggunakan tanda tanya seperti berikut.
Java | Kotlin |
String text = null
String textLength = text.length() // error Null Pointer Exception |
val text: String? = null
val textLength = text?.length //textLength = null (not error) |
String text = null String textLength; If (text != null) { textLength = text.length();} else { textLength = 0; } |
val text: String? = null
val textLength = text?.length ?: 0 |
Dengan adanya jenis tipe data Non Nullable ini, aplikasi tidak akan mengalami error sejuta umat, yaitu Null Pointer Exception (NPE) yang sering terjadi di Java.
Nullable type sendiri lebih dikhususkan untuk penanganan nilai null di mana pada Java pananganannya diserahkan semuanya ke client. Selain itu, ada juga elvis operator (?:) yang berfungsi sebagai value pengganti apabila data null.
Global Variable
Beranjak ke bagian selanjutnya, yaitu perbedaan sintaksis penulisan global variable pada bahasa Java dan Kotlin. Global variable biasanya dibutuhkan ketika variabel digunakan di banyak fungsi. Mari kita lihat dari yang paling dasar dulu.
Java | Kotlin |
Int result;
… |
var result: Int? = null
… |
Pada Kotlin, kamu bisa memberikan nilai null dengan nullable data type terlebih dahulu. Lalu, bagaimana jika kamu ingin variabel tersebut tidak nullable?
Pertama, kamu bisa memberikan nilai default seperti var result: Int = 88. Lalu yang kedua — dan menarik karena tidak ada di Java – adalah dengan menggunakan Lazy Initialization. Caranya yaitu menggunakan property delegation by lazy bersama dengan keyword val seperti berikut.
Java | Kotlin |
Int result;
… |
val result: Int by lazy { 88 } |
Cara yang lain jika ingin menginisialisasi nanti pada baris kode tertentu, kamu bisa menggunakan Lateinit Initialization. Caranya yaitu gunakan keyword lateinit bersama dengan keyword var seperti berikut.
Java | Kotlin |
Int result;
… |
lateinit var result: Int
… |
Menarik, bukan? Dari sini kamu bisa melihat dan menyimpulkan bahwa penulisan Kotlin sangatlah simpel dan tidak ribet. Jadi, bagaimana menurutmu? Sudah mulai mantap hijrah ke Kotlin? Ini baru penulisan tipe data saja, masih ada penulisan syntax lain yang masih belum kita bahas, yakni penulisan function dan juga class. Doakan saya bisa menuliskan artikel selanjutnya, ya!
Oh, ya! Supaya menarik, ada sedikit kuis buat kalian nih!
Apakah tipe data dari kode berikut ini.
1 |
val berat = “80.8” |
Silakan jawab di kolom komentar, ya! Sampai jumpa.