SORU
10 Aralık 2009, PERŞEMBE


Sorular hakkında Java'In Dize havuzu

Bu kodu göz önünde bulundurun:

String first = "abc"; 
String second = new String ("abc");

Kullanırkenyenianahtar kelime, Java abc String yine değil mi yaratacak? Bu normal yığında saklanır veya String havuz mu? Kaç Strings String havuzda sona erecek?

CEVAP
10 Aralık 2009, PERŞEMBE


Eğer new anahtar kelime kullanırsanız, String yeni bir nesne oluşturulur. Nesneler her zaman öbek üzerinde - dize havuzu öbek ayrı ayrı bellek alanı olmadığını unutmayın.

Dize havuzu önbellek gibi. Eğer bunu yaparsanız:

String s = "abc";
String p = "abc";

sonra Java derleyici String tek bir nesne yapmak için yeterince akıllı ve s p Her ikisi de aynı Dize nesne söz konusu olacak. Eğer bunu yaparsanız:

String s = new String("abc");

o zaman orada olacak bir String nesne havuzu, bir temsil eden değişmez "abc", ve orada olacak bir ayrı String nesne, havuz içeren bir kopya içerik havuza alınan nesne. String Java değişmez olduğu için, bu; new String("literal") asla Java anlamsız ve gereksiz yere verimsiz arama yaparak bir şey kazanıyorsun.

String bir nesne üzerinde intern() aramayı unutmayın. Bu da zaten orada değilse havuzu String nesne koyacağız, ve havuza dize referansı döndürür. (Zaten havuzda olsaydı, o zaten vardı nesnesine bir başvuru döndürür). Daha fazla bilgi için bu yöntem için API belgelerine bakın.

Ayrıca String interning (Wikipedia).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007
  • TotalxLuna

    TotalxLuna

    27 Kasım 2011