Masukkan Password
09 Kursus Kotlin Lengkap #9 - String di Kotlin - Tutorial Kotlin untuk Pemula
Kita lanjutkan dari materi sebelumnya. Di video ini topiknya adalah String di Kotlin, lalu masuk ke dua konsep penting: string concatenation dan string templates.
Ada beberapa bagian subtitle yang agak berantakan dan ada istilah yang kurang tepat, jadi saya akan luruskan sambil menjelaskannya.
1. Apa itu String?
Kita sudah belajar bahwa Kotlin memiliki berbagai tipe data:
Int→ bilangan bulatDouble→ bilangan desimalBoolean→true/falseChar→ satu karakterString→ kumpulan karakter/teks
Contoh:
val name: String = "Jack"
Artinya:
Buat sebuah variabel bernama
name, bertipeString, dengan nilai"Jack".
Kalau kita ingin menampilkan:
println(name)
hasilnya:
Jack
2. String berisi teks
String digunakan untuk menyimpan teks, misalnya:
val name: String = "Andi"
val city: String = "Madiun"
val message: String = "Hello World"
Perhatikan bahwa String menggunakan double quote (").
"Hello"
Sedangkan Char menggunakan single quote ('):
'H'
Jadi:
| Kode | Tipe |
|---|---|
'A' | Char |
"A" | String |
"Hello" | String |
'7' | Char |
7 | Int |
Ini penting.
Char
Hanya satu karakter:
val letter: Char = 'A'
String
Bisa terdiri dari banyak karakter:
val word: String = "Apple"
Secara sederhana:
Char = satu karakter String = teks yang terdiri dari karakter-karakter
3. String sebenarnya adalah sebuah class
Subtitle mengatakan:
strings are classes
Secara konsep, ini benar.
Di Kotlin, String adalah sebuah class/type yang menyediakan berbagai kemampuan untuk bekerja dengan teks.
Misalnya nanti kita bisa melakukan:
val name = "Andi"
println(name.length)
Hasil:
4
Karena "Andi" memiliki 4 karakter.
Kita juga bisa melakukan banyak operasi lain terhadap String. Nanti ketika masuk ke materi OOP (Object-Oriented Programming), konsep class dan object akan dibahas lebih dalam.
Untuk sekarang cukup pegang:
Stringadalah tipe data yang digunakan untuk menyimpan teks, dan di Kotlin String memiliki banyak fungsi/properti untuk memanipulasi teks.
4. Cara membuat String secara eksplisit
Video menggunakan contoh seperti:
val stringA: String = "Hello, Master Coding channel."
Mari kita pecah:
val stringA : String = "Hello, Master Coding channel."
│ │ │ │
│ │ │ └── nilai
│ │ └── tipe data
│ └── nama variable
└── deklarasi immutable
Artinya:
Buat sebuah
valbernamastringA, bertipeString, dan nilainya"Hello, Master Coding channel.".
Kemudian:
println(stringA)
hasilnya:
Hello, Master Coding channel.
5. String literal
Ada istilah baru di video:
String literal
Perhatikan:
val name: String = "Jack"
Bagian:
"Jack"
disebut string literal.
String literal adalah nilai teks yang kita tulis langsung di source code menggunakan tanda kutip.
Contoh:
"Hello"
"Jack"
"Kotlin"
"123"
"Hello World"
Semuanya merupakan String literal.
6. Type inference juga berlaku pada String
Kita sudah belajar tentang type inference.
Misalnya:
val age = 20
Kotlin tahu:
age → Int
Kita tidak perlu menulis:
val age: Int = 20
Hal yang sama berlaku pada String.
Kita bisa menulis:
val name: String = "Jack"
atau cukup:
val name = "Jack"
Kotlin otomatis mengetahui:
name → String
Jadi:
val name = "Jack"
secara konsep sama dengan:
val name: String = "Jack"
Untuk kode sehari-hari, bentuk dengan type inference sangat umum digunakan.
7. val atau var?
String bisa disimpan menggunakan val maupun var.
Menggunakan val
val name = "Jack"
Tidak boleh di-reassign:
name = "Abbas" // ERROR
Karena val tidak boleh diarahkan ke nilai baru.
Menggunakan var
var name = "Jack"
name = "Abbas"
Ini valid.
Jadi prinsip yang sudah kita pelajari sebelumnya tetap berlaku:
Gunakan
valjika nilainya tidak perlu diganti. Gunakanvarjika memang perlu berubah.
8. String Concatenation
Sekarang masuk ke konsep penting pertama:
Concatenation
Concatenation berarti menggabungkan beberapa String menjadi satu String.
Misalnya kita punya:
val firstName = "John"
val lastName = "Doe"
Kita ingin menghasilkan:
JohnDoe
Kita bisa menggunakan operator +:
val fullName = firstName + lastName
Hasil:
JohnDoe
Jadi:
"John" + "Doe"
menjadi:
"JohnDoe"
9. Contoh dari video
Video memiliki:
val stringB: String = "Hi"
val stringC: String = "friends"
Kemudian:
println(stringB + stringC)
Hasil:
Hifriends
Kenapa tidak ada spasi?
Karena:
"Hi" + "friends"
benar-benar hanya menggabungkan keduanya:
Hi + friends
↓
Hifriends
Kalau ingin:
Hi friends
kita harus memberikan spasi:
println(stringB + " " + stringC)
Hasil:
Hi friends
10. Concatenation tidak hanya untuk String
Sebelumnya kita belajar bahwa + digunakan untuk penjumlahan:
val result = 10 + 20
hasil:
30
Tetapi ketika operand-nya berupa String, + bisa digunakan untuk menggabungkan teks.
Contoh:
val result = "Hello" + "World"
hasil:
HelloWorld
Bahkan kita bisa menggabungkan String dengan nilai lain:
val age = 20
println("Age: " + age)
Hasil:
Age: 20
Jadi + dapat memiliki perilaku berbeda tergantung tipe data yang digunakan.
11. Menyimpan hasil concatenation ke variable
Video juga menunjukkan:
val stringD: String = stringB + stringC
Artinya:
stringB + stringC
digabungkan terlebih dahulu, kemudian hasilnya disimpan ke stringD.
Misalnya:
val stringB = "Hi"
val stringC = "friends"
val stringD = stringB + stringC
Maka:
stringB → "Hi"
stringC → "friends"
stringD → "Hifriends"
Kalau kita:
println(stringD)
hasilnya:
Hifriends
Dan karena stringD menggunakan val, hasil tersebut tidak bisa di-reassign ke String lain.
12. Masalah concatenation jika teks semakin kompleks
Misalnya kita ingin membuat kalimat:
Hello, my name is Jack and I am 20 years old.
Dengan concatenation kita bisa menulis:
val name = "Jack"
val age = 20
println("Hello, my name is " + name + " and I am " + age + " years old.")
Ini memang bekerja.
Tetapi kalau semakin kompleks, kode bisa menjadi cukup sulit dibaca.
Misalnya:
println("Hello, " + name + ", you are " + age + " years old and your city is " + city + ".")
Di sinilah Kotlin memiliki fitur yang lebih nyaman:
String Templates
13. Apa itu String Template?
String template memungkinkan kita memasukkan nilai variable langsung ke dalam String.
Contoh:
val name = "Jack"
println("Hello, my name is $name")
Hasil:
Hello, my name is Jack
Perhatikan:
$name
Kita tidak perlu melakukan:
"Hello, my name is " + name
Kita bisa langsung menulis:
"Hello, my name is $name"
Ini jauh lebih mudah dibaca.
14. Cara kerja $name
Misalnya:
val name = "Jack"
println("Hello, my name is $name")
Kotlin melihat:
$name
dan memahami:
“Ambil nilai dari variable
namedan masukkan ke dalam String.”
Karena:
name = "Jack"
maka:
"Hello, my name is $name"
menjadi:
Hello, my name is Jack
15. Kenapa String Template berguna?
Bayangkan kita menggunakan cara manual.
val name = "Jack"
println("Hello, my name is " + name)
Bisa.
Tetapi dengan String Template:
println("Hello, my name is $name")
Lebih bersih dan mudah dibaca.
Terutama kalau banyak variable:
val name = "Jack"
val age = 20
val city = "Madiun"
println("My name is $name, I am $age years old, and I live in $city.")
Hasil:
My name is Jack, I am 20 years old, and I live in Madiun.
16. Keuntungan besar String Template
Bagian ini yang sebenarnya ingin ditunjukkan oleh video.
Misalnya:
val name = "Jack"
println("Hello, my name is $name")
Kemudian kita mengubah:
val name = "Abbas"
Kita tidak perlu mengubah bagian println.
Tetap:
println("Hello, my name is $name")
Output otomatis menjadi:
Hello, my name is Abbas
Karena $name selalu mengambil nilai terbaru dari variable name.
Ini jauh lebih aman daripada menulis nama secara hard-code:
println("Hello, my name is Jack")
Kalau nama berubah menjadi Abbas, kita harus mencari dan mengganti "Jack" secara manual.
17. String Template dengan expression
Nah, ada satu level yang lebih penting.
Kalau hanya variable sederhana, kita bisa menggunakan:
$name
Tetapi kalau kita ingin memasukkan expression, gunakan:
${expression}
Contoh:
val age = 20
println("I am ${age + 1} years old.")
Hasil:
I am 21 years old.
Kotlin menghitung:
age + 1
kemudian memasukkan hasilnya ke String.
18. Perbedaan $name dan ${...}
Variable sederhana
val name = "Jack"
println("Hello $name")
Gunakan:
$name
Expression
val age = 20
println("Next year I will be ${age + 1}")
Gunakan:
${age + 1}
Jadi gampangnya:
$variable→ untuk variable sederhana${expression}→ untuk expression yang lebih kompleks
19. Contoh String Template yang lebih nyata
Misalnya kita membuat data mahasiswa:
val name = "Budi"
val age = 21
val score = 90
println("Name: $name")
println("Age: $age")
println("Score: $score")
Output:
Name: Budi
Age: 21
Score: 90
Atau dibuat menjadi satu kalimat:
println("My name is $name, I am $age years old, and my score is $score.")
Hasil:
My name is Budi, I am 21 years old, and my score is 90.
20. String Template juga bisa menggunakan Boolean
Misalnya:
val age = 20
val isAdult = age >= 18
println("Am I an adult? $isAdult")
Hasil:
Am I an adult? true
Ini menghubungkan materi kita sebelumnya:
age >= 18
↓
Boolean
↓
true
↓
String Template
21. String interpolation vs concatenation
Kamu akan sering mendengar istilah string interpolation ketika membahas $variable.
Contoh:
val name = "Jack"
println("Hello $name")
Di Kotlin, kita biasanya menyebut fitur ini string templates.
Sedangkan:
println("Hello " + name)
adalah concatenation.
Perbandingannya:
| Concatenation | String Template |
|---|---|
"Hello " + name | "Hello $name" |
Menggunakan + | Menggunakan $ |
| Bisa lebih panjang | Biasanya lebih mudah dibaca |
| Menggabungkan String | Memasukkan nilai ke dalam String |
Keduanya valid.
22. Contoh perbandingan
Misalnya:
val name = "Andi"
val age = 20
Concatenation
println("My name is " + name + " and I am " + age + " years old.")
String Template
println("My name is $name and I am $age years old.")
Hasilnya sama:
My name is Andi and I am 20 years old.
Tetapi String Template biasanya lebih mudah dibaca.
23. Bagaimana dengan println()?
Kita juga perlu membedakan:
print()
dan:
println()
print()
Mencetak tanpa pindah baris.
print("Hello")
print("World")
Output:
HelloWorld
println()
Mencetak kemudian pindah ke baris berikutnya.
println("Hello")
println("World")
Output:
Hello
World
Jadi ln pada println dapat kamu bayangkan sebagai:
print + new line
24. Contoh program lengkap
Coba satukan semua materi dalam satu program:
fun main() {
val firstName = "Andi"
val lastName = "Pratama"
val age = 20
val fullName = firstName + " " + lastName
println("Hello!")
println("My name is $fullName")
println("I am $age years old")
println("Next year I will be ${age + 1} years old")
}
Output:
Hello!
My name is Andi Pratama
I am 20 years old
Next year I will be 21 years old
Di sini kita sudah menggunakan beberapa konsep sekaligus:
val
↓
String
↓
Int
↓
Concatenation
↓
String Template
↓
Expression ${...}
↓
println()
25. Bagian subtitle yang perlu diluruskan
Ada beberapa hal yang sebaiknya kamu jangan hafalkan mentah-mentah dari subtitle.
❌ “Strings are characters”
Kurang tepat.
Lebih tepat:
String adalah teks yang terdiri dari sequence/rangkaian karakter.
Misalnya:
"Hello"
terdiri dari beberapa karakter:
H e l l o
Sedangkan:
'H'
adalah satu Char.
❌ “String is several characters”
Ini penyederhanaan.
String memang bisa berisi banyak karakter, tetapi String juga bisa kosong:
val text = ""
Ini tetap String, meskipun tidak memiliki karakter.
⚠️ “Kotlin will do the right thing”
Yang dimaksud adalah type inference.
Contoh:
val name = "Jack"
Kotlin menyimpulkan:
name → String
Bukan berarti Kotlin bisa selalu menebak sembarang hal. Type inference tetap mengikuti aturan tipe Kotlin.
⚠️ “String concatenation exactly like Java”
Konsepnya memang mirip dengan Java, yaitu + dapat digunakan untuk menggabungkan String.
Tetapi Kotlin memiliki fitur String Template yang membuat penulisan String dinamis jauh lebih nyaman:
"Hello $name"
26. Mental model yang paling mudah
Untuk saat ini, bayangkan String seperti kotak yang menyimpan teks.
val name = "Jack"
Bayangkan:
┌─────────────┐
│ name │
│ │
│ "Jack" │
└─────────────┘
Kalau kita lakukan:
val greeting = "Hello $name"
Kotlin mengambil isi name:
name
↓
"Jack"
kemudian membuat String:
"Hello Jack"
27. Ringkasan materi
Ada 3 konsep utama dari video ini:
1. String
Untuk menyimpan teks:
val name: String = "Jack"
atau dengan type inference:
val name = "Jack"
2. String Concatenation
Menggabungkan String menggunakan +:
val firstName = "John"
val lastName = "Doe"
val fullName = firstName + " " + lastName
Hasil:
John Doe
3. String Template
Memasukkan variable ke dalam String menggunakan $:
val name = "John"
println("Hello $name")
Hasil:
Hello John
Untuk expression:
val age = 20
println("Next year I will be ${age + 1}")
Hasil:
Next year I will be 21
🧠 Yang wajib kamu ingat
val name = "Andi"
"Andi" → String literal
val greeting = "Hello " + name
+ → concatenation
val greeting = "Hello $name"
$name → String Template
val age = 20
println("Age: ${age + 1}")
${...} → expression di dalam String Template
Kalau dibuat menjadi satu alur:
String
↓
menyimpan teks
↓
Concatenation (+)
↓
menggabungkan teks
↓
String Template ($)
↓
memasukkan nilai variable/expression ke teks
Ini akan sangat sering kamu gunakan nanti ketika membuat aplikasi Android, CLI, backend, API response, logging, UI text, dan sebagainya.