Rentetan: Objek tanpa Kata Kunci "baharu"
Rentetan Java sememangnya objek, namun ia unik kerana ia boleh dibuat tanpa kata kunci "baharu". Ini menimbulkan persoalan: mengapa?
Pada mulanya, rentetan mungkin kelihatan seperti objek lain:
Object obj = new Object();
Walau bagaimanapun, rentetan tidak dimulakan dengan cara ini:
String str = "Hello World";
Pelatihan String Literal
Untuk memahami perkara ini percanggahan, kita perlu mendalami konsep interning rentetan. Interning bermaksud bahawa setiap kejadian rentetan literal tertentu (cth., "abcd") merujuk kepada satu tika rentetan itu, dan bukannya membuat kejadian baharu setiap kali.
Dalam Java, rentetan yang diisytiharkan dengan petikan berganda ialah dianggap sebagai literal dan secara automatik dimasukkan ke dalam penjara. Ini bermakna:
String a = "abcd"; String b = "abcd";
akan menghasilkan:
a == b; // True
Penciptaan Rentetan dengan "baharu"
Walaupun latihan didayakan untuk rentetan literal, anda masih boleh membuat rentetan menggunakan "baharu" kata kunci:
String a = new String("abcd"); String b = new String("abcd");
Walau bagaimanapun, dalam kes ini, adalah mungkin untuk mempunyai:
a == b; // False
Faedah Interning
Interning string literals memberikan beberapa faedah:
Nota: Sentiasa disyorkan untuk menggunakan kaedah .equals() untuk membandingkan rentetan, walaupun untuk rentetan yang dilatih. , kerana ia menyemak kesaksamaan kandungan.
Atas ialah kandungan terperinci Mengapa Anda Boleh Mencipta Rentetan dalam Java Tanpa Kata Kunci 'baru'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!