Manipulasi String
Diperkenalkan| English | Makna |
|---|---|
| immutable/ɪˈmjuːtəbl/ | tak berubah |
String dan indeks
- Sebuah
Stringadalah urutan karakter, bernomor dari0. - Dalam
"HELLO", indeks0adalah'H', indeks1adalah'E', … indeks4adalah'O'. s.length()memberikan jumlah karakter; indeks terakhir adalahlength() - 1.- Kesalahan off-by-one di sini adalah bug String yang paling umum.
substring
s.substring(start, end)mengembalikan karakter dari indeksstarthingga tetapi tidak termasukend."HELLO".substring(1, 3)→"EL"(indeks1dan2, bukan3).s.substring(start)(satu argumen) berjalan daristarthingga akhir.- Panjang hasilnya adalah
end - start.
indexOf dan equals
s.indexOf("lo")mengembalikan indeks pertama di mana teks muncul, atau-1jika tidak ditemukan.s.equals(t)menguji apakah dua String memiliki karakter yang sama — mengembalikan sebuahboolean.- Gunakan
.equals(), jangan gunakan==, untuk membandingkan isi String. ==membandingkan referensi (alamat), bukan karakternya.
String bersifat tak berubah (immutable)
- String bersifat tak berubah: karakternya tidak pernah dapat diubah setelah dibuat.
- Metode seperti
substringdantoUpperCasemengembalikan String baru — mereka tidak mengedit yang asli. s.toUpperCase();saja tidak melakukan apa-apa yang terlihat; Anda harus menyimpan hasilnya:s = s.toUpperCase();- Ketidakberubahan inilah mengapa metode String selalu mengembalikan nilai segar.
Bandingkan isi String dengan .equals(), jangan gunakan ==. == menguji apakah dua referensi menunjuk ke objek yang sama, bukan apakah karakternya cocok — jadi a == b bisa menjadi false meskipun keduanya adalah "cat". Dan String bersifat tak berubah: s.toUpperCase() mengembalikan String baru dan meninggalkan s tidak berubah kecuali Anda menetapkan ulang s = s.toUpperCase();.
Bekerja dengan "HELLO":
"HELLO".length()→5; indeks0adalah'H', indeks4adalah'O'."HELLO".substring(1, 4)→"ELL"(indeks1, 2, 3)."HELLO".indexOf("L")→2(pertamaL);.equals("hello")→false(perbedaan kasus).
Sebuah String diindeks dari 0 (indeks terakhir length()-1). substring(start, end) mengembalikan indeks start hingga end-1; indexOf menemukan posisi (atau -1). Bandingkan isi dengan .equals(), bukan ==. String bersifat tak berubah — metode mengembalikan String baru, jadi tetapkan ulang untuk mempertahankan perubahan.
Indexing HELLO dari 0
substring(1, 4) mengambil indices 1, 2, 3 → ELL.
Dalam String "HELLO", karakter manakah yang berada di index 0?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Strings di-index dari 0, jadi index 0 adalah 'H'.
Apa yang dikembalikan oleh "HELLO".substring(1, 3)?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Indices 1 and 2 (up to but not including 3) → EL.
Untuk membandingkan apakah dua Strings memiliki karakter yang sama, Anda harus menggunakan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
.equals() membandingkan konten; == membandingkan references.
s.toUpperCase(); secara mandiri mengubah String s in place.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
String bersifat tidak dapat diubah — Anda harus menetapkan ulang s = s.toUpperCase();
Apa yang dikembalikan oleh "HELLO".indexOf("L") (L pertama)?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
L pertama berada di index 2.