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

  • Plugable

    Plugable

    19 Mayıs 2010
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013
  • WestsideMrArO

    WestsideMrAr

    6 EKİM 2010