Cuplikan kuliah dengan seorang mentor sebagai bagian dari kursus Codegym University. Mendaftar untuk kursus penuh.
"Hai, Amigo! Hari ini kita akan menganalisis beberapa skenario umum yang melibatkan bekerja dengan string. Misalnya, apakah Anda tahu cara membagi string menjadi beberapa bagian?"
"Aku tidak akan langsung memberitahumu, Ellie. Tapi kamu akan memberitahuku, kan?"
split()
metode
"Ada beberapa cara untuk melakukannya. Cara pertama untuk memisahkan string menjadi beberapa bagian adalah dengan menggunakan metode split()
. Ekspresi reguler yang mendefinisikan string pembatas khusus harus diteruskan sebagai parameter. Anda akan mempelajari apa itu ekspresi reguler pencarian Koleksi Java .
Contoh:
Kode | Hasil |
---|---|
|
Hasilnya akan menjadi array dari tiga string:
|
Sederhana, tetapi terkadang pendekatan ini berlebihan. Jika ada banyak pembatas (misalnya spasi, karakter baris baru, tab, titik), maka Anda harus membuat ekspresi reguler yang agak rumit."
"Yah, tentu. Dan jika sulit dibaca, maka sulit pula untuk melakukan perubahan.
StringTokenizer
kelas
Cuplikan kuliah dengan seorang mentor sebagai bagian dari kursus Codegym University. Mendaftar untuk kursus penuh.
"Java memiliki kelas khusus yang tugasnya adalah membagi string menjadi substring.
"Kelas ini tidak menggunakan ekspresi reguler: sebagai gantinya, Anda cukup mengirimkan string yang terdiri dari pembatas. Keuntungan dari pendekatan ini adalah tidak memecah seluruh string menjadi potongan-potongan sekaligus, tetapi bergerak dari awal ke akhir satu selangkah demi selangkah.
Kelas memiliki konstruktor dan dua metode. Kami meneruskan konstruktor string yang kami pisahkan menjadi beberapa bagian, dan string yang terdiri dari sekumpulan karakter pembatas.
Metode | Keterangan |
---|---|
|
Mengembalikan substring berikutnya |
|
Memeriksa apakah ada lebih banyak substring. |
"Kelas ini entah bagaimana mengingatkan saya pada kelas Pemindai, yang juga memiliki nextLine()
dan hashNextLine()
metode.
"Itu pengamatan bagus yang telah Anda buat. Anda dapat membuat StringTokenizer
objek dengan perintah ini:
StringTokenizer name = new StringTokenizer(string, delimiters);
Dimana string adalah string yang akan dibagi menjadi beberapa bagian. Dan pembatas adalah sebuah string, dan setiap karakter di dalamnya diperlakukan sebagai pembatas. Contoh:
Kode | Keluaran konsol |
---|---|
|
|
"Perhatikan bahwa setiap karakter dalam string yang diteruskan dalam string kedua ke StringTokenizer
konstruktor dianggap sebagai pemisah.
String.format()
metode dan StringFormatter
kelas
"Metode lain yang menarik dari kelas String adalah format()
.
"Katakanlah Anda memiliki berbagai variabel yang menyimpan data. Bagaimana Anda menampilkannya di layar dalam satu baris? Misalnya, kami memiliki beberapa data (kolom kiri) dan output yang diinginkan (kolom kanan):
Kode | Keluaran konsol |
---|---|
|
|
Kode untuk program semacam itu akan terlihat seperti ini:
Kode program |
---|
|
"Anda akan setuju dengan saya bahwa kodenya tidak mudah dibaca. Dan jika nama variabelnya lebih panjang, maka kodenya akan menjadi lebih sulit:
Kode program |
---|
|
"Ya, itu sulit dibaca!"
"Jangan khawatir. Ini adalah situasi umum dalam program dunia nyata, jadi saya ingin memberi tahu Anda tentang cara menulis kode ini dengan lebih sederhana dan ringkas.
String.format
" String
Kelas memiliki metode statis format()
: memungkinkan Anda menentukan pola untuk menyusun string dengan data. Tampilan umum dari perintah adalah sebagai berikut:
String name = String.format(pattern, parameters);
Contoh:
Kode | Hasil |
---|---|
|
|
|
|
|
|
" format()
Parameter pertama metode ini adalah string format yang berisi semua teks yang diinginkan bersama dengan karakter khusus yang disebut penentu format (seperti %d
dan %s
) di tempat Anda perlu memasukkan data.
" format()
Metode menggantikan ini %s
dan %d
penentu format dengan parameter yang mengikuti string format dalam daftar parameter. Jika kita ingin memasukkan string, maka kita menulis . %s
Jika kita ingin memasukkan angka, maka penentu formatnya adalah %d
. Contoh:
Kode | Hasil |
---|---|
|
s adalah sama dengan"a=1, b=4, c=3" |
Berikut adalah daftar singkat penentu format yang dapat digunakan di dalam string format:
Penentu | Arti |
---|---|
|
String |
|
interger: byte , short , int ,long |
|
bilangan asli: float ,double |
|
boolean |
|
char |
|
Date |
|
% karakter |
"Penentu ini menunjukkan jenis data, tetapi ada juga penspesifikasi yang menunjukkan urutan data. Untuk mendapatkan argumen berdasarkan nomornya (penomoran dimulai dari satu), Anda perlu menulis " % 1$ d " alih - alih " %d ". Contoh:
Kode | Hasil |
---|---|
|
s adalah sama dengan"a=13, b=12, c=11" |
%3$d
akan mendapatkan argumen ke-3, %2$d
akan mendapatkan argumen kedua, dan %d
akan mendapatkan argumen pertama. Penspesifikasi format %s
dan %d
mengacu pada argumen terlepas dari penspesifikasi seperti %3$d
atau%2$s
Kolam Tali
"Setiap string yang ditentukan dalam kode sebagai string literal disimpan di area memori yang disebut saat StringPool
program sedang berjalan. StringPool
Ini adalah larik khusus untuk menyimpan string. Tujuannya adalah untuk mengoptimalkan penyimpanan string:
"Pertama, string yang ditentukan dalam kode harus disimpan di suatu tempat, bukan? Kode terdiri dari perintah, tetapi data (terutama string besar) harus disimpan dalam memori secara terpisah dari kode. Hanya referensi ke objek string yang muncul dalam kode.
"Kedua, semua literal string identik harus disimpan dalam memori hanya sekali. Dan begitulah cara kerjanya. Saat kode kelas Anda dimuat oleh mesin Java, semua literal string ditambahkan ke jika belum ada. Jika sudah StringPool
ada sudah ada, maka kita cukup menggunakan referensi string dari StringPool
.
Dengan demikian, jika Anda menetapkan literal yang sama ke beberapa variabel String dalam kode Anda, maka variabel ini akan berisi referensi yang sama. Sebuah literal akan ditambahkan StringPool
hanya sekali. Dalam semua kasus lainnya, kode akan mendapatkan referensi ke string yang sudah dimuat di file StringPool
.
Berikut kira-kira cara kerjanya:
Kode | Bekerja dengan StringPoll |
---|---|
|
|
"Itulah sebabnya a
dan b
variabel akan menyimpan referensi yang sama."
"Saya harap saya memahami semuanya dengan benar.
intern()
metode.
"Dan bagian terbaiknya adalah Anda dapat secara terprogram menambahkan string apa pun ke StringPool
. Untuk melakukan ini, Anda hanya perlu memanggil metode String
variabel intern()
.
" intern()
Metode ini akan menambahkan string ke StringPool
jika belum ada, dan akan mengembalikan referensi ke string di file StringPool
.
"Dan apa yang akan terjadi jika dua string identik ditambahkan ke dalam metode StringPool
using intern()
?"
"Metode ini akan mengembalikan referensi yang sama. Ini dapat digunakan untuk membandingkan string dengan referensi. Contoh:
Kode | Catatan |
---|---|
|
|
|
|
Anda tidak mungkin sering menggunakan metode ini. Konon, orang suka menanyakannya dalam wawancara kerja.
"Jadi, lebih baik mengetahuinya daripada tidak mengetahuinya. Terima kasih, Ellie!"
GO TO FULL VERSION