Rumah >Java >javaTutorial >Mengapa Anda Boleh Mencipta Rentetan dalam Java Tanpa Kata Kunci 'baru'?

Mengapa Anda Boleh Mencipta Rentetan dalam Java Tanpa Kata Kunci 'baru'?

Barbara Streisand
Barbara Streisandasal
2024-11-16 21:51:03584semak imbas

Why Can You Create Strings in Java Without the

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:

  • Prestasi: Oleh menggunakan satu tika untuk setiap rentetan unik, JVM memperuntukkan kurang memori dan melakukan lebih sedikit ciptaan objek.
  • Penjimatan Memori: Interning memastikan bahawa hanya satu tika wujud untuk setiap rentetan yang berbeza, mengurangkan jejak ingatan.
  • Pemeriksaan Kesaksamaan: Menggunakan "==" untuk literal rentetan adalah sah kerana ia menyemak kesaksamaan fizikal, yang dijamin kerana interning.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn