Modul 9 — String

Pelajari cara kerja String di Java, method-method penting, perbandingan, StringBuilder, dan formatting modern.
PemulaStringManipulasi TeksJava 21 LTS

📝 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.

Tujuan Modul: Setelah mempelajari modul ini, Anda akan mampu membuat dan membandingkan String dengan benar, menggunakan method-method penting, memilih antara String dan StringBuilder untuk efisiensi, serta memformat teks dengan gaya modern.

🔤 Dasar-Dasar String

Membuat String

Ada dua cara membuat String:

Cara Membuat String
String s1 = "Halo";           // literal (disarankan)
String s2 = new String("Halo"); // object baru (jarang dipakai)
Gunakan cara literal ("...") karena lebih efisien. Java akan menggunakan String pool untuk menghemat memori.

Membandingkan String

Ini adalah sumber kesalahan paling umum bagi pemula!

Perbandingan String
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
Selalu gunakan 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+)

⚡ 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.

Perbandingan 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

Contoh 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
Jika Anda hanya membutuhkan string yang tidak berubah, gunakan String. Jika Anda perlu banyak modifikasi (terutama dalam loop), gunakan StringBuilder.

🎨 String Formatting Modern

String.format() dan formatted()

Formatting
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.

Text Block
String json = """
        {
            "nama": "%s",
            "umur": %d
        }
        """.formatted(nama, umur);
System.out.println(json);

Output:

{
    "nama": "Budi",
    "umur": 20
}
Text block sangat berguna untuk menulis JSON, HTML, SQL, atau teks multi-baris lainnya.

🧪 Latihan Praktik

Buat program Java yang:

  1. Meminta pengguna memasukkan sebuah kalimat (bisa lebih dari satu kata).
  2. 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)
  3. Gunakan StringBuilder untuk 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 StringBuilder dari kalimat lalu panggil reverse().

📺 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.
  • StringBuilder untuk manipulasi efisien
  • ✅ Formatting dengan String.format() dan text block

Selanjutnya

Modul 10: OOP Dasar — Class, Object, Constructor, dan Encapsulation.

Selamat! Modul 9 selesai. String adalah fondasi penting dalam pemrograman Java. 🎉