Cara kerja string bagian dalam, dan metode substring - 1

"Hai, Amigo!"

"Hai, Ellie."

"Saya akan memberi tahu Anda tentang substring. Substring adalah bagian dari string. Dan operasi yang paling umum dilakukan pada string (setelah menggabungkan beberapa string menjadi satu) adalah mendapatkan substring."

7) Bagaimana cara mendapatkan bagian dari sebuah String?

"Metode substring mengembalikan bagian dari sebuah String. Metode ini memiliki dua versi."

"Versi pertama mengembalikan substring yang ditentukan dengan indeks awal dan akhir. Tetapi karakter pada indeks akhir tidak termasuk! Jika Anda melewati angka 1 dan 3, maka substring hanya akan berisi karakter kedua dan ketiga (ingat indeks mulai dengan 0)."

"Versi kedua mengembalikan substring mulai dari indeks yang diteruskan hingga akhir String."

Metode Contoh
String substring(int beginIndex, int endIndex)
String s = "Good news, everyone!";
s = s.substring(1,6);
Hasil:

s == "ood n";
String substring(int beginIndex)
String s = "Good news, everyone!";
s = s.substring(1);

"Cukup sederhana. Terima kasih, Ellie."

"Saya juga akan menjelaskan cara kerja internal objek String kepada Anda."

"Seperti yang mungkin sudah Anda ketahui, String adalah kelas yang tidak dapat diubah. Dan keuntungan apa yang diberikannya kepada kita? Seperti yang terjadi, salah satu keuntungan utama adalah kemampuan untuk mendapatkan substring. Tapi hal pertama yang pertama."

"Secara internal, objek String berisi larik karakter, yang tidak terlalu sulit ditebak. Tetapi ia juga menyimpan dua variabel lagi: indeks karakter pertama dalam larik dan jumlah karakter. Sekarang saya akan memberi tahu Anda apa ini digunakan untuk."

"Saat kita membuat substring menggunakan metode substring , objek String baru akan dibuat."

"Tapi, alih-alih menyimpan referensi ke array karakter baru, objek menyimpan referensi ke array lama serta dua variabel yang digunakannya untuk menentukan bagian dari array karakter asli yang terkait dengannya."

"Aku tidak mengerti semua itu."

"Saat substring dibuat, larik karakter tidak disalin ke objek String baru. Sebaliknya, kedua objek menyimpan referensi ke larik karakter asli. Tapi! Objek kedua juga menyimpan dua variabel: indeks awalnya dalam larik dan jumlah karakter yang termasuk dalam substring."

"Coba lihat:"

Mendapatkan substring Apa yang disimpan di dalam substring
String s = "mama";
Apa yang disimpan di s:

char[] value = {'m','a','m','a'};
offset = 0;
count = 4;
String s2 = s.substring(1);
Apa yang disimpan di s2:

char[] value = {'m','a','m','a'};
offset = 1;
count = 3;
String s3 = s.substring(1, 3);
Apa yang disimpan di s3:

char[] value = {'m','a','m','a'};
offset = 1;
count = 2;

"Ketiga String menyimpan referensi ke array karakter yang sama, tetapi mereka juga menyimpan indeks karakter pertama dan terakhir yang berkaitan dengannya. Atau lebih tepatnya, indeks karakter pertama dan jumlah karakter."

"Itu masuk akal sekarang."

"Jadi, jika Anda mengambil String yang panjangnya 10.000 karakter dan Anda membuat 10.000 substring dengan panjang berapa pun, substring ini akan menggunakan memori yang sangat sedikit, karena larik karakter tidak diduplikasi. String ini, yang Anda harapkan akan banyak digunakan ruang, benar-benar hanya akan mengambil beberapa byte."

"Dingin!"

"Tapi bisakah kamu melakukannya jika kamu bisa memodifikasi Strings?"

"Tidak, seseorang dapat mengubah String pertama, dan kemudian semua substringnya akan berubah juga. Sekarang masuk akal mengapa mereka melakukan itu. Itu adalah solusi yang sangat keren."

"Aku senang kamu menyukainya."