Artikel ini memperkenalkan 10 pertanyaan paling umum tentang String di Java:
1. Untuk perbandingan string, sebaiknya Anda menggunakan "==" atau sama dengan()?
Sederhananya, "==" menentukan apakah dua referensi merujuk ke alamat memori yang sama (objek fisik yang sama).
Dan sama dengan menentukan apakah nilai dua string sama.
Kecuali jika Anda ingin menentukan apakah dua referensi string merupakan objek yang sama, Anda harus selalu menggunakan metode sama dengan().
Anda akan memahami masalah ini lebih baik jika Anda memahami string magang
2. Untuk informasi sensitif, mengapa lebih baik menggunakan char[] daripada String?
String adalah objek yang tidak dapat diubah, artinya setelah dibuat, seluruh objek tidak dapat diubah. Sekalipun seorang pemula berpikir bahwa referensi String telah berubah, sebenarnya itu hanyalah referensi (penunjuk) yang menunjuk ke objek (baru) lainnya.
Pemrogram dapat secara eksplisit mengubah susunan karakter, sehingga informasi sensitif (seperti kata sandi) tidak mudah terekspos di tempat lain (selama Anda menyetel char[] ke 0 setelah digunakan).
3. Gunakan String sebagai kondisi kasus dalam pernyataan switch?
Mulai dari JDK7, hal ini dimungkinkan. Omong-omong, Java 6 dan versi sebelumnya tidak mendukung ini.
Copy kode kodenya sebagai berikut:
// Hanya valid di Java 7 ke atas!
beralih (str.toLowerCase()) {
kasus "a":
nilai = 1;
merusak;
kasus "b":
nilai = 2;
merusak;
}
4. Ubah String menjadi angka
Untuk angka yang sangat besar silahkan gunakan Long, kodenya sebagai berikut
Copy kode kodenya sebagai berikut:
int umur = Integer.parseInt("10");
long id = Long.parseLong("190"); // Jika nilainya mungkin besar.
5. Cara membagi string dengan karakter spasi
String yang diterima oleh metode split() String akan diuraikan sebagai ekspresi reguler.
"/s" mewakili karakter kosong, seperti spasi "", tab "/t", umpan baris "/n", gerbong kembali "/r".
Ketika kompiler mem-parsing kode sumber, ia juga akan melakukan transcoding literal, jadi diperlukan "//s".
Copy kode kodenya sebagai berikut:
String[] strArray = aString.split("//s+");
6. Bagaimana metode substring() diproses secara internal?
Di JDK6, metode substring() masih membagikan array char[] asli dan membuat String "baru" melalui offset dan panjangnya.
Jika Anda ingin substring() mendapatkan objek yang baru dibuat, gunakan metode berikut:
Copy kode kodenya sebagai berikut:
String sub = str.substring(awal, akhir) + "";
Tentu saja, di Java 7, substring() membuat array char[] baru alih-alih membagikannya.
Untuk mempelajari lebih lanjut, silakan merujuk ke: metode substring() dan perbedaannya di JDK6 dan JDK7
7. String vs StringBuilder vs StringBuffer
StringBuilder dapat berubah, sehingga nilai internal dapat diubah setelah pembuatan.
StringBuffer disinkronkan dan karenanya aman untuk thread, tetapi relatif kurang efisien.
8. Bagaimana cara menyambung string yang sama berulang kali?
Opsi 1: Gunakan kelas utilitas StringUtils dari perpustakaan Apache Commons Lang.
Copy kode kodenya sebagai berikut:
String str = "abcd";
String berulang = StringUtils.repeat(str,3);//abcdabcdabcd
Opsi 2:
Gunakan konstruktor StringBuilder.
Copy kode kodenya sebagai berikut:
String src = "nama";
int len = src.panjang();
int ulangi = 5;
Pembuat StringBuilder = StringBuilder baru(len * ulangi);
untuk(int i=0; i<ulangi; i++){
pembangun.tambahkan(src);
}
String dst = pembangun.toString();
9. Bagaimana cara mengubah String menjadi Tanggal?
Copy kode kodenya sebagai berikut:
Format SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String str = "07-11-2013";
Tanggal tanggal = format.parse(str);
System.out.println(format.format(tanggal));//2013-11-07
10. Bagaimana cara menghitung berapa kali karakter tertentu muncul?
Juga menggunakan kelas StringUtils perpustakaan Apache Commons Lang:
Copy kode kodenya sebagai berikut:
int n = StringUtils.countMatches("11112222", "1");
Sistem.keluar.println(n);