Modul 9 — String
📝 Modul 9 — String
String adalah salah satu kelas paling penting di Java. String merepresentasikan teks dan memiliki banyak method untuk manipulasi. Penting untuk memahami cara kerja String karena sering digunakan dalam setiap program.
🔤 Dasar-Dasar String
Membuat String
Ada dua cara membuat String:
String s1 = "Halo"; // literal (disarankan)
String s2 = new String("Halo"); // object baru (jarang dipakai)
"...") karena lebih efisien. Java akan menggunakan String pool untuk menghemat memori.Membandingkan String
Ini adalah sumber kesalahan paling umum bagi pemula!
String s1 = "Halo";
String s2 = new String("Halo");
// ⚠️ JANGAN pakai == untuk membandingkan isi String!
System.out.println(s1 == s2); // false (bandingkan alamat memori)
System.out.println(s1.equals(s2)); // true (bandingkan ISI) ← BENAR
System.out.println(s1.equalsIgnoreCase("HALO")); // true (ignore case)
String s1 = "Halo";
String s2 = new String("Halo");
System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equalsIgnoreCase("HALO")); // true
equals() untuk membandingkan isi String. Operator == hanya membandingkan referensi (alamat memori).Cara aman dari NullPointerException:
String input = null;
System.out.println("Halo".equals(input)); // false (tidak NPE)
// System.out.println(input.equals("Halo")); // Akan throw NullPointerException!
🛠️ Method-Method Penting String
Klik tab di bawah untuk melihat kategori method.
Method untuk mendapatkan informasi tentang String.
String teks = " Halo, Java! ";
System.out.println(teks.length()); // 15 (termasuk spasi)
System.out.println(teks.isEmpty()); // false
System.out.println("".isEmpty()); // true
System.out.println(" ".isBlank()); // true (Java 11+)
Method untuk mengubah format String.
String teks = " Halo, Java! ";
System.out.println(teks.toUpperCase()); // " HALO, JAVA! "
System.out.println(teks.toLowerCase()); // " halo, java! "
System.out.println(teks.trim()); // "Halo, Java!" (hapus spasi tepi)
System.out.println(teks.strip()); // "Halo, Java!" (unicode-aware, Java 11+)
Method untuk mencari posisi atau keberadaan substring.
String teks = " Halo, Java! ";
System.out.println(teks.contains("Java")); // true
System.out.println(teks.indexOf("Java")); // 8 (posisi pertama)
System.out.println(teks.lastIndexOf("a")); // 12 (posisi terakhir)
System.out.println(teks.startsWith(" Halo")); // true
System.out.println(teks.endsWith("! ")); // true
Method untuk mengambil bagian dari String.
String teks = " Halo, Java! ";
System.out.println(teks.substring(7)); // "Java! " (dari index 7)
System.out.println(teks.substring(7, 11)); // "Java" (index 7 sampai 10)
System.out.println(teks.charAt(7)); // 'J'
Method untuk mengganti karakter atau substring.
String teks = " Halo, Java! ";
System.out.println(teks.replace("Java", "World")); // " Halo, World! "
System.out.println("a1b2c3".replaceAll("[0-9]", "#")); // "a#b#c#" (pakai regex)
System.out.println("a1b2c3".replaceFirst("[0-9]", "#")); // "a#b2c3"
Method untuk memisah atau menggabung String.
String csv = "Budi,Siti,Andi";
String[] parts = csv.split(",");
// parts = ["Budi", "Siti", "Andi"]
System.out.println(String.join(" - ", parts)); // "Budi - Siti - Andi"
Method untuk mengubah tipe lain menjadi String.
System.out.println(String.valueOf(42)); // "42"
System.out.println(String.valueOf(3.14)); // "3.14"
System.out.println("ab".repeat(3)); // "ababab" (Java 11+)
⚡ StringBuilder — Manipulasi String yang Efisien
Kapan pakai StringBuilder? Saat perlu memodifikasi string berkali-kali (misal di dalam loop). String biasa bersifat immutable — setiap perubahan membuat objek baru di memori, yang bisa menyebabkan masalah performa.
// String biasa di loop — LAMBAT (buat objek baru terus)
String hasil = "";
for (int i = 0; i < 1000; i++) {
hasil += i; // setiap += = objek String baru!
}
// StringBuilder — CEPAT (modifikasi di tempat)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append(i);
}
String hasil2 = sb.toString();
String hasil = "";
for (int i = 0; i < 1000; i++) {
hasil += i; // lambat
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append(i); // cepat
}
Method-Method StringBuilder
StringBuilder s = new StringBuilder("Halo");
s.append(", Java!"); // tambah di akhir: "Halo, Java!"
s.insert(0, ">> "); // sisipkan di depan: ">> Halo, Java!"
s.delete(0, 3); // hapus index 0-2: " Halo, Java!"
s.replace(1, 5, "Hi"); // ganti range: " Hi, Java!"
s.reverse(); // balik seluruh string
s.deleteCharAt(0); // hapus satu karakter di index 0
System.out.println(s.length()); // panjang saat ini
System.out.println(s.toString()); // konversi ke String
String. Jika Anda perlu banyak modifikasi (terutama dalam loop), gunakan StringBuilder.🎨 String Formatting Modern
String.format() dan formatted()
String nama = "Budi";
int umur = 20;
double ipk = 3.75;
// String.format() — simpan ke variabel
String s = String.format("Nama: %s, Umur: %d, IPK: %.2f", nama, umur, ipk);
// formatted() — Java 15+, lebih fluent
String s2 = "Nama: %s, IPK: %.2f".formatted(nama, ipk);
Text Block (Java 15+)
Text block memudahkan penulisan string multi-baris tanpa perlu escape sequence.
String json = """
{
"nama": "%s",
"umur": %d
}
""".formatted(nama, umur);
System.out.println(json);
Output:
{
"nama": "Budi",
"umur": 20
}
🧪 Latihan Praktik
Buat program Java yang:
- Meminta pengguna memasukkan sebuah kalimat (bisa lebih dari satu kata).
- Menampilkan:
- Panjang kalimat
- Kalimat dalam huruf kapital semua
- Kalimat dalam huruf kecil semua
- Jumlah kata (gunakan
split(" ")dan perhatikan spasi ganda) - Apakah kalimat mengandung kata "Java"?
- Ganti semua spasi dengan karakter
-(tanda hubung) - Balikkan kalimat (menggunakan
StringBuilder)
- Gunakan
StringBuilderuntuk membalik kalimat.
Contoh interaksi:
Masukkan sebuah kalimat: Saya belajar Java hari ini
Hasil:
Panjang: 24
Huruf besar: SAYA BELAJAR JAVA HARI INI
Huruf kecil: saya belajar java hari ini
Jumlah kata: 5
Mengandung "Java": true
Setelah spasi diganti '-': Saya-belajar-Java-hari-ini
Kalimat terbalik: ini irah avaj rajaleb ayaS
- Gunakan
scanner.nextLine()untuk membaca kalimat. - Hati-hati dengan spasi ganda saat split. Anda bisa gunakan
split("\\s+")untuk menangani spasi ganda. - Untuk membalik, buat
StringBuilderdari kalimat lalu panggilreverse().
📺 Video Penjelasan
Tonton video berikut untuk penjelasan lebih visual tentang String di Java (25 menit):
✨ Kesimpulan
Apa yang Telah Dipelajari
- ✅ Membuat String dengan literal vs constructor
- ✅ Membandingkan String dengan
equals()(bukan==) - ✅ Method-method penting: length, trim, substring, replace, dll.
- ✅
StringBuilderuntuk manipulasi efisien - ✅ Formatting dengan
String.format()dan text block
Selanjutnya
Modul 10: OOP Dasar — Class, Object, Constructor, dan Encapsulation.