Penciptaan Rentetan dalam Java: Menyingkap Ketiadaan 'baharu'
Walaupun Java biasanya menggunakan kata kunci 'baharu' untuk menjadikan objek, rentetan menunjukkan penyimpangan ingin tahu daripada norma ini. Tidak seperti objek lain, rentetan boleh dibuat tanpa menggunakan 'baru'. Ini menimbulkan persoalan: mengapa pengecualian ini wujud? Adakah masih mungkin untuk menggunakan 'baharu' dalam penciptaan rentetan?
Memahami Mekanisme Interning
Selain penjelasan sebelumnya, adalah penting untuk mengenali mekanisme interning yang digunakan untuk literal rentetan ("abcd" tetapi bukan String baru("abcd") dalam Java). Mekanisme ini memastikan bahawa setiap tika "abcd" merujuk satu tika String tunggal, menghalang penciptaan kejadian baharu apabila rujukan berulang. Hasilnya:
String a = "abcd"; String b = "abcd"; a == b; //True
Perbandingan dengan Rentetan Bukan Intern
Sebaliknya, apabila mencipta rentetan menggunakan 'baharu', objek yang terhasil adalah contoh yang berbeza:
String a = new String("abcd"); String b = new String("abcd"); a == b; // False
Prestasi Pertimbangan
Interling rentetan literal mempunyai implikasi prestasi yang mendalam. Rentetan sering muncul berbilang kali dalam kod, dan interning menghapuskan keperluan untuk menyatakannya berulang kali. Pengoptimuman ini menjadi amat berfaedah dalam senario seperti:
for (int i = 0; i < 10; i++) { System.out.println("Next iteration"); }
Tanpa interning, rentetan "Lelaran seterusnya" akan memerlukan 10 instantiations, manakala interning memastikan satu instantiation.
Atas ialah kandungan terperinci Mengapa Rentetan Boleh Dicipta Tanpa 'baharu' di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!