Masukkan Password
06 Kursus Lengkap Kotlin #5 - Type Casting di Kotlin
Materi ini membahas Type Conversion / Type Casting di Kotlin, yaitu bagaimana mengubah sebuah data dari satu tipe data ke tipe data lainnya.
Ini penting karena Kotlin adalah bahasa yang strongly typed: Kotlin cukup ketat dalam urusan tipe data. Jadi kita tidak bisa sembarangan memasukkan Double ke Int, atau String ke Int, tanpa melakukan konversi yang sesuai.
1. Apa itu Type Conversion?
Type conversion berarti mengubah data dari satu tipe menjadi tipe lain.
Misalnya kita punya:
val x: Int = 7
x bertipe:
Int
Kemudian kita punya:
val y: Double = 3.40
y bertipe:
Double
Sekarang kita ingin mengubah:
Double → Int
atau:
Int → Double
Inilah yang disebut type conversion.
2. Kenapa Type Conversion diperlukan?
Karena Kotlin tidak selalu mengizinkan kita mencampurkan tipe data yang berbeda.
Misalnya:
var x: Int = 7
var y: Double = 3.40
Kemudian:
x = y
❌ Error.
Kenapa?
Karena:
x → Int
y → Double
Kita sedang mencoba memasukkan:
Double
ke tempat yang membutuhkan:
Int
Kotlin akan menolak.
3. Analogi kotak
Supaya mudah dipahami, bayangkan tipe data sebagai kotak dengan aturan isi tertentu.
Kita punya:
┌─────────────┐
│ Int │
│ 7 │
└─────────────┘
dan:
┌─────────────┐
│ Double │
│ 3.40 │
└─────────────┘
Kotak Int hanya menerima nilai Int.
Kotak Double menerima nilai Double.
Jadi:
var x: Int = 7
var y: Double = 3.40
x = y
sama seperti mengatakan:
“Masukkan isi kotak Double ke kotak Int.”
Kotlin menjawab:
❌ Tidak bisa, tipe datanya berbeda.
4. Int → Double
Sekarang kita balik:
var x: Int = 7
var y: Double = 3.40
y = x
Ini bisa dilakukan secara implisit dalam contoh video tersebut?
Nah, di sini ada bagian subtitle/video yang perlu diluruskan.
Pada Kotlin, kita tidak boleh mengandalkan implicit numeric conversion seperti yang dijelaskan video.
Kotlin tidak otomatis mengubah:
Int → Double
ketika melakukan assignment biasa.
Jadi:
var x: Int = 7
var y: Double = 3.40
y = x
juga akan menghasilkan error karena x adalah Int, sedangkan y membutuhkan Double.
Yang benar adalah melakukan konversi secara eksplisit:
y = x.toDouble()
Hasilnya:
x = 7
↓
x.toDouble()
↓
7.0
Jadi aturan yang aman untuk kamu ingat:
Di Kotlin, konversi tipe angka harus dilakukan secara eksplisit menggunakan fungsi seperti
.toInt(),.toDouble(),.toFloat(), dan sebagainya.
Ini berbeda dengan beberapa bahasa lain yang melakukan numeric conversion secara otomatis.
5. Cara mengubah Double menjadi Int
Misalnya:
val y: Double = 3.40
Kita ingin mengubahnya menjadi Int.
Gunakan:
val x: Int = y.toInt()
Jadi:
3.40
↓
toInt()
↓
3
Bagian .toInt() adalah fungsi untuk mengubah nilai menjadi Int.
6. Kenapa hasilnya menjadi 3, bukan 4?
Ini penting.
Kalau kita punya:
val number: Double = 3.40
val result: Int = number.toInt()
hasilnya:
result = 3
Bagian desimal:
.40
dibuang.
Contoh:
val a = 3.99
println(a.toInt())
Hasil:
3
Bukan:
4
Begitu juga:
val a = 7.8
println(a.toInt())
hasilnya:
7
Jadi .toInt() bukan pembulatan biasa.
Ia melakukan truncation — bagian pecahannya dibuang.
7. Bagaimana dengan angka negatif?
Ini juga menarik.
Misalnya:
val number = -3.9
println(number.toInt())
Hasilnya:
-3
Bukan -4.
Karena .toInt() membuang bagian desimal menuju nol.
3.9 → 3
-3.9 → -3
Jadi jangan menganggap .toInt() sebagai round().
8. Int → Double
Sekarang kita ingin mengubah:
Int → Double
Misalnya:
val x: Int = 7
Gunakan:
val y: Double = x.toDouble()
Hasil:
7 → 7.0
Contoh:
val age: Int = 20
val ageDouble: Double = age.toDouble()
println(ageDouble)
Output:
20.0
9. Int → Float
Kalau ingin mengubah Int menjadi Float:
val x: Int = 7
val y: Float = x.toFloat()
Hasil:
7 → 7.0f
10. Double → Float
Bisa juga:
val x: Double = 3.14
val y: Float = x.toFloat()
Sekarang:
Double
↓
toFloat()
↓
Float
Perlu diperhatikan bahwa Double umumnya memiliki presisi lebih tinggi daripada Float, sehingga konversi Double → Float bisa menyebabkan kehilangan presisi.
11. Fungsi konversi yang sering digunakan
Untuk sekarang, kamu bisa menghafalkan beberapa ini:
| Dari | Menjadi | Cara |
|---|---|---|
Int | Double | .toDouble() |
Int | Float | .toFloat() |
Double | Int | .toInt() |
Double | Float | .toFloat() |
Float | Int | .toInt() |
Float | Double | .toDouble() |
Long | Int | .toInt() |
Int | Long | .toLong() |
Contoh:
val a = 10
val b = a.toDouble()
val c = a.toFloat()
val d = a.toLong()
12. .toInt() sebenarnya apa?
Video menyebut istilah method.
Di Kotlin, lebih tepat untuk pemula menyebutnya sebagai function yang dipanggil pada sebuah nilai/object, atau sering disebut member function tergantung konteks.
Misalnya:
val number = 3.14
number.toInt()
Bacanya:
“Ambil
number, lalu panggiltoInt()untuk mendapatkan nilaiInt.”
Strukturnya:
number
│
▼
.toInt()
│
▼
Int
Contoh:
val number: Double = 3.14
val result: Int = number.toInt()
13. Type conversion tidak sama dengan mengubah variable asli
Ini konsep yang bagus untuk dipahami.
Misalnya:
val number: Double = 3.14
val result: Int = number.toInt()
Apakah number berubah menjadi Int?
Tidak.
number tetap:
Double
3.14
Kita hanya membuat hasil konversi:
number
3.14 (Double)
│
│ .toInt()
▼
3 (Int)
Jadi:
println(number)
tetap:
3.14
Sedangkan:
println(result)
menjadi:
3
14. Contoh lengkap
fun main() {
val x: Int = 7
val y: Double = 3.40
val doubleX: Double = x.toDouble()
val intY: Int = y.toInt()
println(x)
println(doubleX)
println(y)
println(intY)
}
Output kira-kira:
7
7.0
3.4
3
Perhatikan:
7 → 7.0
3.4 → 3
15. Kenapa Kotlin dibuat ketat seperti ini?
Tujuannya salah satunya adalah mengurangi kesalahan yang tidak sengaja.
Bayangkan Kotlin otomatis mengubah semua tipe angka tanpa kita sadari.
Misalnya:
Int
↓
Double
↓
Float
↓
Long
Programmer bisa tidak sadar bahwa terjadi perubahan tipe atau bahkan kehilangan presisi.
Dengan Kotlin, kita diminta menulis secara jelas:
x.toDouble()
Sehingga programmer secara eksplisit mengatakan:
“Ya, saya memang sengaja mengubah
xmenjadiDouble.”
Ini membuat kode lebih mudah dipahami dan lebih aman.
16. Jangan tertukar antara Type Conversion dan Assignment
Perhatikan:
var x: Int = 10
Ini adalah assignment/declaration.
Sedangkan:
x.toDouble()
adalah conversion.
Kalau:
val y = x.toDouble()
terjadi dua hal:
Pertama
x.toDouble()
mengubah nilai x menjadi Double.
Kedua
val y = ...
menyimpan hasilnya ke y.
17. Contoh kasus nyata
Misalnya kita menghitung harga.
val price: Int = 10000
Kita ingin melakukan perhitungan dengan Double.
val priceDouble = price.toDouble()
Sekarang:
price → 10000 Int
priceDouble → 10000.0 Double
Kemudian:
val discount = priceDouble * 0.15
Hasilnya:
1500.0
Lalu:
val finalPrice = priceDouble - discount
Hasil:
8500.0
18. Bagian terakhir video: mengetahui tipe data
Video juga memperkenalkan fitur IntelliJ IDEA untuk mengecek inferred type.
Misalnya:
val x = 100
Kita tidak menulis:
val x: Int = 100
Tetapi Kotlin bisa mengetahui bahwa:
x → Int
Ini disebut type inference.
Kotlin menyimpulkan tipe berdasarkan nilai yang diberikan.
19. Contoh Type Inference
val x = 100
Kotlin mengetahui:
100 → Int
Maka:
x → Int
Contoh lain:
val price = 10.5
Kotlin mengetahui:
price → Double
Dan:
val name = "John"
Kotlin mengetahui:
name → String
Sedangkan:
val isActive = true
Kotlin mengetahui:
isActive → Boolean
20. Apa itu Inferred Type?
Inferred type artinya:
Tipe data yang disimpulkan oleh Kotlin secara otomatis.
Misalnya:
val age = 20
Kita tidak menulis Int, tetapi Kotlin menyimpulkan:
age adalah Int
Jadi:
val age = 20
secara konsep seperti:
val age: Int = 20
21. Cara mengecek tipe di IntelliJ IDEA
Video menyebut shortcut:
Ctrl + Shift + P
Shortcut ini dapat digunakan untuk melihat informasi tipe/expression di IntelliJ IDEA dalam konteks yang sesuai.
Misalnya:
val x = 100
Kamu bisa menempatkan cursor pada x dan menggunakan fitur tersebut untuk melihat bahwa tipenya adalah:
Int
Namun perlu diingat, shortcut dapat berbeda tergantung sistem operasi, keymap, dan versi IntelliJ IDEA. Jadi jangan terlalu fokus menghafalkan shortcut-nya.
Yang penting adalah konsepnya:
IntelliJ IDEA dapat membantu kita melihat tipe data yang dikenali Kotlin.
22. Hubungan Type Inference dengan Type Conversion
Ini dua konsep yang berbeda.
Type inference
Kotlin menentukan tipe secara otomatis:
val x = 100
Kotlin menyimpulkan:
x → Int
Type conversion
Kita mengubah tipe:
val y = x.toDouble()
Sekarang:
x → Int
y → Double
Jadi:
Type inference
↓
"Ini tipenya apa?"
Type conversion
↓
"Ubah tipe ini menjadi tipe lain."
23. Kesalahan umum pemula
❌ Mengira Kotlin otomatis mengubah Int ke Double
Jangan mengandalkan:
val x: Int = 10
val y: Double = x
Gunakan:
val y: Double = x.toDouble()
❌ Mengira .toInt() melakukan pembulatan
val x = 3.9
println(x.toInt())
Hasil:
3
Bukan:
4
Kalau ingin pembulatan, nanti kita akan mengenal fungsi seperti round(), ceil(), dan floor().
❌ Mengira variable asli berubah tipe
val x: Double = 3.14
val y = x.toInt()
Bukan berarti x berubah menjadi Int.
Tetap:
x → Double
y → Int
24. Gambaran visual keseluruhan
Coba simpan konsep ini di kepala:
TYPE CONVERSION
│
┌────────┼────────┐
│ │ │
▼ ▼ ▼
Int Double Float
│ │ │
│ │ │
▼ ▼ ▼
toDouble() toInt() toInt()
toFloat() toFloat() toDouble()
toLong() ...
Contoh:
val number = 10
Tipe:
Int
Kemudian:
val doubleNumber = number.toDouble()
menjadi:
Int
10
│
│ .toDouble()
▼
Double
10.0
25. Ringkasan materi
Ada beberapa hal yang wajib kamu pahami dari video ini.
1. Kotlin memiliki tipe data yang ketat
val x: Int = 10
val y: Double = 3.5
Tidak boleh sembarangan:
x = y
atau menganggap Kotlin otomatis melakukan numeric conversion.
2. Gunakan fungsi conversion
Untuk Int → Double:
x.toDouble()
Untuk Double → Int:
x.toInt()
Untuk Int → Float:
x.toFloat()
Untuk Int → Long:
x.toLong()
3. Double → Int bisa menghilangkan desimal
val x = 3.99
val y = x.toInt()
Hasil:
y = 3
4. Type conversion tidak mengubah variable asli
val x = 3.99
val y = x.toInt()
Tetap:
x → Double
y → Int
5. Type inference
val x = 100
Kotlin otomatis mengetahui:
x → Int
Kita tidak selalu harus menulis:
val x: Int = 100
🧠 Cara mengingat paling sederhana
Bayangkan kamu punya dua kotak:
┌─────────────┐ ┌─────────────┐
│ Int │ │ Double │
│ 7 │ │ 3.14 │
└─────────────┘ └─────────────┘
Kotlin tidak sembarangan memindahkan isi dari satu kotak ke kotak lain.
Kalau kamu ingin mengubah Int menjadi Double:
7.toDouble()
Hasil:
7 → 7.0
Kalau Double menjadi Int:
3.14.toInt()
Hasil:
3.14 → 3
Jadi inti utama video ini adalah:
🔑 Kotlin bersifat strongly typed, sehingga ketika kita perlu mengubah tipe data, kita melakukan conversion secara eksplisit menggunakan fungsi seperti
.toInt(),.toDouble(),.toFloat(), dan.toLong().
Dan satu koreksi penting dari subtitle video: jangan menganggap Int → Double otomatis diterima hanya karena Double dapat merepresentasikan bilangan bulat. Di Kotlin, gunakan .toDouble() secara eksplisit.