Önemsiz örneğinizde, derleyici, Dize birleştirme yapmak için StringBuilder
kullanıyor. Ancak, bir döngüde birleştirme gerçekleştiyse, derleyici çeşitli StringBuilder
ve String
nesneleri oluşturabilir. Örneğin: Yukarıdaki 3 her yürütüldüğünde, bir StringBuilder
bir nesne oluşturulur
String s= "" ;
for(int i= 0 ; i < 10 ; i++)
s+= "a" ;
, s
içerikleri ekli, bu "A" eklenmiş ve daha sonra StringBuilder
s
geri atanacak bir String dönüştürülür . Toplam 10 StringBuilder
s ve 10 String
s.
StringBuilder sb= new StringBuilder() ;
for(int i= 0 ; i < 10 ; i++)
sb.append("a");
String s= sb.toString() ;
yılında Tersine
, Sadece 1
StringBuilder
ve 1
String
oluşturulur.
Bunun ana nedeni, derleyicinin, ilk döngünün diğerine eşdeğer olduğunu ve daha verimli (bayt) kod oluşturduğunu anlayabilecek kadar akıllı olamamasıdır. Daha karmaşık durumlarda, en akıllı derleyicinin bile bilmesi imkansızdır. Bu optimizasyona kesinlikle ihtiyacınız varsa, bunu manuel olarak StringBuilder
s'yi kullanarak tanıtmanız gerekir. Eğer bunu iki dizeyi "java" oluşturmak ve edecek
String line = "java";
String sufix = " is awesome";
line = line + sufix;
yazarken anlamına gelen bu değişmez dizeleri faaliyet yerli dize sınıfları kullanarak olduğunda "müthiş":
Önemsiz örneğinizde, hiçbir yararı olmayabilir. StringBuilders kullanışlıdır, çünkü + ile uzlaştığınızda, her dolarak yepyeni dizeler yaratırsınız. StringBuilder bu nedenle çok sayıdaki dizeleri birleştirmek için daha etkilidir. –