String vs StringBuilder

Merhaba,

Bu dersimizde String ve StringBuilder’ın farkını göreceğiz.

Java’da String ve StringBuffer/StringBuilder arasındaki en önemli fark : String objesi değiştirilemezken StringBuffer/StringBuilder objelerinin değiştirilebilir olmasıdır.

Herşeye String kullanan birimisinizdir ? Cevabı evet ise burada düzeltmeniz gereken şeyler vardır.

Mesela

Yukarda örnek 2 tane String objesi yaptık. Bir değişkene eklemeler için kullandık. Performansı konusunda bir düşünceniz var mı ? Yada çok iyi bir kod mu oldu ?

Bu sorular için alta bir de şu kodu ekleyeyim.

Son bir örnek ise

Yukardaki gibi. Ya neler oluyor ? Sonuçları aynı ama ?

Evet doğru haklısınız sonuç her zaman aynı gelin şimdi ne olduğuna bakalım.

String sınıfları immutable StringBuffer/StringBuilder ise mutable olduğunu yukarda dedik.(String = Değiştirilemez, StringBuffer||StringBuilder=Değiştirilebilir)

String objenin içine saklanan değer değiştirilemez. Peki nasıl oluyor da ben istediğim zaman string bir değişkeni değiştirebiliyorum diye sorabilirsiniz. Sizin görmüş olduğunuz nesene aynı nesne değildir. String objesi değişmek için arka planda yeni bir String nesnesi oluşturur. Her değişikilte yeni bir String class’ı oluşuyor. Bu da zamanla performansı kötü yönde etkiliyor.

StringBuffer/StringBuilder objelerini kullanırsanız performans açısından daha iyi sonuçlar elde edersiniz. Çünkü Objenin içinde saklanan değer değiştirilebilir bir değerdir.

StringBuffer ile StringBuilder arasında ki tek fark ise “senkronizasyon”dur.
StringBuffer “synchronized” iken StringBuilder “synchronized” değildir.

Thread kullancaksanız; StringBuffer, kullanmayacaksanız StringBuilder kullanmanız daha verimli olcaktır.

Yani siz yukardaki örnekte 3 kere String objesini memory’de oluşturmak mı istersiniz yoksa StringBuilder/StringBuffer ile bu işi 1 kerede çözmek mi istersiniz ?

 

Kaynakça:

İngilizce : https://www.javatpoint.com/difference-between-stringbuffer-and-stringbuilder

İngilizce : http://net-informations.com/q/faq/builder.html

Türkçe : https://wxtp.wordpress.com/2012/08/25/java-stringbuilder/

Post Author: umiitkose

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">