1. Dukungan bawaan Java untuk string;
Yang disebut dukungan bawaan berarti bahwa jenis string tidak diimplementasikan menggunakan pointer char seperti C, dan pengkodean string Java sesuai dengan standar pengkodean unicode, yang juga berarti bahwa ia tidak perlu diimplementasikan menggunakan kelas string dan wstring seperti C ++ to Jadilah kompatibel dengan bahasa C dan standar unicode. Java mendukung tipe string melalui kelas string secara internal.
Ini berarti: kita dapat secara langsung memanggil metode yang sama dengan objek string:
// Anda dapat secara langsung memanggil semua metode objek string di "ABC"
int panjang = "abc" .length ();
maupun
String abc = string baru ("abc");
int panjang = abc.length ();
2. Nilai string dalam java konstan (konstan)
Yang kami maksudkan di sini adalah bahwa setelah jenis string dibuat, nilainya tidak dapat diubah. String ("def") "ABC" dan "def" di kolam konstan yang disimpan di mesin virtual Java.
"ABC" dalam kode berikut disimpan di kumpulan konstan, sehingga alamat yang ditunjukkan oleh variabel A dan AB adalah "ABC" yang sama di kolam konstan.
Salinan kode adalah sebagai berikut:
Kelas publik StringTest {
public static void main (string [] args) {
String a = "ABC";
String ab = "abc";
String abc = string baru ("abc");
System.out.println (AB == A);
System.out.println (a == ABC);
}
}
/*Output program:
* BENAR
* PALSU
* *//
Jadi, bagaimana diterapkan secara dinamis dan string variabel? Java menyediakan kelas StringBuffer dan StringBuilder untuk mencapai persyaratan ini; Apakah StringBuilder dan StringBuffer diimplementasikan? Ini menyimpan string melalui array karakter. Berikut ini adalah cuplikan yang ditemukan dari kode sumber yang datang dengan JDK.
3. Masalah pengkodean dalam string.
Dua pertanyaan untuk dipahami di sini: Cara menangani penyandian string dalam file sumber? Pengkodean apa yang digunakan string saat dikompilasi ke dalam file kelas atau kode yang dijalankan di mesin virtual java?
Masalah pertama adalah bahwa pengkodean string dalam kode sumber tergantung pada IDE atau editor teks Anda. Misalnya, kode berikut diedit dalam format pengkodean GBK, dan kemudian buka menggunakan decoding UTF-8 dan GBK
// Format Pengkodean GBK, buka dalam format GBK
// Format Pengkodean GBK, buka dalam format UTF-8, kacau;
Jadi bagaimana cara menangani masalah pengkodean kode sumber semacam ini? Jawabannya ditentukan dalam opsi parameter -Encoding dari kompiler Javac. Pengkodean default Windows umumnya GBK (nilai ini dapat diperoleh melalui System.getProperty ("File.encoding")); Gunakan Javac -encoding UTF- 8 Compile.
Apa penyandian string saat dikompilasi ke dalam file kelas atau kode saat menjalankan mesin virtual Java? Bagaimana pengkodean kode sumber? Ini berarti bahwa selama kompiler Javac dengan benar memahami pengkodean string dalam file kode sumber, string dalam file runtime atau class bytecode tidak tergantung pada format pengkodean dalam kode sumber. Di sini kita dapat lebih memahami jenis arang dasar atau kelas karakter di Java. '1' Panjang karakter atau karakter Cina di Java adalah 16 bit.
Selain itu, dalam jenis string, kami juga menggunakan pengkodean karakter tetap yang ditentukan untuk mengonversi representasi dan string biner yang mendasarinya, yang berarti bahwa kami dapat dengan benar membaca pengkodean GBK, pengkodean UTF-8 atau file teks lain yang dikodekan atau lainnya. Aliran input dikonversi itu ke dalam string yang benar dalam memori.
Misalnya, ada metode berikut di kelas string:
string publik (byte [] byte, charset charset);
byte publik [] getBytes (charset charset);
Ada metode anggota lain yang perlu diperhatikan:
byte publik [] getBytes ();