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
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).
Java dize havuzu ne olduğunu ve nasıl ...
Neden char[] şifreler için Dize Java t...
Java ile bir numaralama için bir Dize ...
Nasıl bir dosyanın içeriğini bir Java ...
Java nasıl bir dize bölmek...