"Bagaimana menurutmu, Amigo? Kelas Java apa yang paling populer setelah int?"

"Kau sudah memberiku spoiler di judul pelajarannya, Ellie. It's String!"

"Memang, ini adalah spoiler. Stringdigunakan di mana-mana. Ini memiliki banyak metode berguna yang lebih baik Anda ketahui.

" StringKelas adalah satu-satunya kelas selain tipe primitif yang literalnya dapat digunakan dalam switchpernyataan; kompiler menangani penambahan string dan objek String dengan cara khusus; Stringobjek disimpan dalam memori dengan cara khusus. Pada dasarnya, kelas Stringadalah sangat kelas khusus.

"Selain itu, Stringkelas memiliki banyak kelas pembantu yang tujuannya adalah untuk lebih menyederhanakan bekerja dengan string di Jawa. Ketika Anda mempelajari semua ini, banyak hal akan menjadi lebih mudah untuk Anda lakukan."

"Aku tidak sabar."

"Baiklah, kita akan mulai dari inti ekosistem ini — pengorganisasian kelas String. Struktur kelas Stringsebenarnya sangat sederhana: di dalamnya terdapat larik karakter ( chararray) yang menyimpan semua karakter string. Untuk contoh, ini adalah bagaimana kata 'Hello' disimpan:

Struktur kelas String

Ini penting.

Sebenarnya, ini tidak cukup akurat. Karena Stringkelas ini sangat penting, ia menggunakan banyak pengoptimalan, dan data disimpan secara internal bukan sebagai larik karakter, tetapi hanya sebagai larik byte.

Metode dari kelas String

Kelas Stringmemiliki banyak metode: hanya memiliki 18 konstruktor! Jadi, di bawah ini saya hanya akan mencantumkan yang paling sering digunakan:

Metode Keterangan
int length()
Mengembalikan jumlah karakter dalam string
boolean isEmpty()
Memeriksa apakah string adalah string kosong
boolean isBlank()
Periksa apakah string hanya berisi karakter spasi: spasi, tab, baris baru, dll.
char charAt(int index)
Mengembalikan karakter pada posisi indeks dalam string.
char[] toCharArray()
Mengembalikan array karakter (salinan) yang membentuk string
byte[] getBytes()
Mengonversi string menjadi sekumpulan byte dan mengembalikan larik byte.
String[] split(String regex)
Membagi string menjadi beberapa substring.
String join(CharSequence delimiter, elements)
Menggabungkan beberapa substring menjadi satu
String intern()
Masukkan string ke dalam kumpulan string.

"Itu terlihat sangat bagus!"

"Mari kita menulis program yang mengubah jalur file dari gaya Unix ke gaya Windows. Unix menggunakan karakter /untuk memisahkan folder, sedangkan Windows menggunakan \karakter tersebut.

Solusi 1. Menggunakan chararray

Kode Catatan
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Membuat objek Pemindai
Membaca baris dari konsol

Mengkonversi string ke larik karakter
Mengulangi karakter
Jika karakternya /,
ganti dengan \. Jangan lupa tentang melarikan diri.

Buat string baru berdasarkan array karakter.
Menampilkan string.

Solusi 2. Menggunakan split()dan join()metode:

Kode Catatan
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String array[] = path.split("\\/");


String result = String.join("\\", array);


System.out.println(result);
Membuat objek Pemindai
Membaca baris dari konsol

Mengkonversi string menjadi larik string . Karakter /digunakan sebagai pemisah (dua garis miring ekstra adalah hasil dari pelolosan ganda).
Gabungkan semua string dalam array string . The \digunakan sebagai pemisah (kami melihatnya lolos).

Menampilkan string.

Solusi 3. Menggunakan replace(char oldChar, char newChar)metode:

Kode Catatan
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Buat objek Pemindai
Membaca baris dari konsol

Cukup ganti satu karakter dengan yang lain
(yang kedua diloloskan)
Tampilkan string.

"Saya paling suka solusi ketiga. Tapi saya akan melatih ketiganya."

"Bagus sekali, Amigo. Sepertinya kamu sudah tidak sabar untuk mempraktikkan pengetahuan barumu. Pelajaran sudah selesai."