"Apa pendapat awak, Amigo? Apakah kelas Java yang paling popular selepas int?"

"Anda sudah memberi saya spoiler dalam tajuk pelajaran, Ellie. Ia String!"

"Sememangnya, ia adalah spoiler. Stringdigunakan sepenuhnya di mana-mana. Ia mempunyai banyak kaedah berguna yang anda lebih tahu.

" StringKelas adalah satu-satunya kelas selain daripada jenis primitif yang literalnya boleh digunakan dalam switchpernyataan; pengkompil mengendalikan penambahan rentetan dan objek Rentetan dengan cara yang istimewa; Stringobjek disusun dalam ingatan dengan cara yang istimewa. Pada asasnya, kelas Stringadalah sangat kelas khas.

"Selain itu, Stringkelas ini mempunyai sekumpulan kelas pembantu yang tujuannya adalah untuk memudahkan lagi bekerja dengan rentetan dalam Java. Apabila anda mempelajari semua ini, banyak perkara akan menjadi lebih mudah untuk anda lakukan."

"Saya tidak sabar."

"Nah, kita akan bermula dari teras ekosistem ini — organisasi kelas String. Struktur kelas Stringsebenarnya sangat mudah: di dalamnya terdapat tatasusunan aksara ( chartatasusunan) yang menyimpan semua aksara rentetan. Untuk contoh, beginilah cara perkataan 'Hello' disimpan:

Struktur kelas String

Ianya penting.

Sebenarnya, ini tidak begitu tepat. Oleh kerana Stringkelas adalah sangat penting, ia menggunakan banyak pengoptimuman, dan data disimpan secara dalaman bukan sebagai tatasusunan aksara, tetapi hanya sebagai tatasusunan bait.

Kaedah kelas String

Kelas Stringmempunyai banyak kaedah: ia mempunyai 18 pembina sahaja! Jadi, di bawah saya akan menyenaraikan hanya yang paling kerap digunakan:

Kaedah Penerangan
int length()
Mengembalikan bilangan aksara dalam rentetan
boolean isEmpty()
Menyemak sama ada rentetan itu ialah rentetan kosong
boolean isBlank()
Semak bahawa rentetan hanya mengandungi aksara ruang putih: ruang, tab, baris baharu, dsb.
char charAt(int index)
Mengembalikan aksara pada kedudukan indeks dalam rentetan.
char[] toCharArray()
Mengembalikan tatasusunan aksara (salinan) yang membentuk rentetan
byte[] getBytes()
Menukar rentetan kepada set bait dan mengembalikan tatasusunan bait.
String[] split(String regex)
Membahagikan rentetan kepada berbilang subrentetan.
String join(CharSequence delimiter, elements)
Mencantumkan berbilang subrentetan bersama-sama
String intern()
Meletakkan rentetan ke dalam kolam rentetan.

"Itu kelihatan sangat bagus!"

"Mari kita tulis program yang menukar laluan fail daripada gaya Unix kepada gaya Windows. Unix menggunakan aksara /untuk memisahkan folder, manakala Windows menggunakan \aksara.

Penyelesaian 1. Menggunakan chartatasusunan

Kod Nota
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);
Cipta objek Pengimbas
Baca baris daripada konsol

Tukar rentetan kepada tatasusunan aksara
Gelung ke atas aksara
Jika aksara itu /,
gantikannya dengan \. Jangan lupa tentang melarikan diri.

Buat rentetan baharu berdasarkan tatasusunan aksara.
Paparkan rentetan.

Penyelesaian 2. Menggunakan kaedah split()dan join():

Kod Nota
Scanner console = new Scanner(System.in);
String path = console.nextLine();

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


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


System.out.println(result);
Cipta objek Pengimbas
Baca baris daripada konsol

Tukar rentetan kepada tatasusunan rentetan . Watak /digunakan sebagai pemisah (dua garis miring tambahan adalah hasil daripada melarikan diri berganda).
Gabungkan semua rentetan dalam tatasusunan rentetan . Ia \digunakan sebagai pemisah (kita lihat ia terlepas).

Paparkan rentetan.

Penyelesaian 3. Menggunakan replace(char oldChar, char newChar)kaedah:

Kod Nota
Scanner console = new Scanner(System.in);
String path = console.nextLine();

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

System.out.println(result);
Cipta objek Pengimbas
Baca baris dari konsol

Hanya gantikan satu aksara dengan yang lain
(yang kedua dilepaskan)
Paparkan rentetan.

"Saya paling suka penyelesaian ketiga. Tetapi saya akan berlatih ketiga-tiganya."

"Syabas, Amigo. Saya nampak awak sudah tidak sabar untuk mempraktikkan ilmu baru awak. Pelajaran sudah tamat."