Java'da String, StringBuffer ve StringBuilder arasındaki fark – Ekli örnek

Yayınlanan: 2022-01-30
Java'da String, StringBuffer ve StringBuilder arasındaki fark - Karşılaştırma ve Örnek ekli

Bu Java eğitiminde Java String, StringBuffer ve StringBuilder arasındaki farkı inceleyeceğiz.

Başlayalım:

Sicim:

String sınıfı, karakter dizilerini temsil eder. Java programlarındaki "crunchify" gibi tüm dize değişmezleri bu sınıfın örnekleri olarak uygulanır. Dizeler sabittir; değerleri oluşturulduktan sonra değiştirilemez.

StringBuffer:

İş parçacığı için güvenli, değiştirilebilir bir karakter dizisi. Bir dize arabelleği, bir Dize gibidir, ancak değiştirilebilir.

Herhangi bir zamanda belirli bir karakter dizisini içerir, ancak dizinin uzunluğu ve içeriği belirli yöntem çağrıları yoluyla değiştirilebilir.

Dize arabellekleri, birden çok iş parçacığı tarafından kullanım için güvenlidir.

Dize Oluşturucu:

Değişken bir karakter dizisi. Bu sınıf, StringBuffer ile uyumlu bir API sağlar, ancak senkronizasyon garantisi yoktur.

Bu sınıf, dize arabelleğinin tek bir iş parçacığı tarafından kullanıldığı yerlerde (genel olarak olduğu gibi) StringBuffer için bir yedek olarak kullanılmak üzere tasarlanmıştır.

Çoğu uygulamada daha hızlı olacağından, mümkün olduğunda StringBuffer yerine bu sınıfın kullanılması önerilir.

String, StringBuffer ve StringBuilder'ın aşağıdaki tüm özelliklerini karşılaştıralım.

Sicim StringBuffer StringBuilder
Konu güvenli mi? Evet Evet Numara
Senkronize mi? Evet Evet Numara
Değiştirilebilir mi? Hayır (değişmez) Evet (değişebilir) Evet (değişebilir)
Depolamak dize havuzu Yığın Yığın
Verim Yavaş Hızlı Daha hızlı

Java kodu:

  • Sınıf oluşturma: CrunchifyStringVsStringBufferVsStringBuilder.java
  • İçine aşağıdaki kodu koyun
  • Dosyayı kaydet

Bu eğitimde, toplam 199999 kez ekleme, ekleme dizesi ekliyoruz.

IntelliJ IDEA Konsolu Sonucu:

Yukarıdaki programı IntelliJ IDEA'da veya Eclipse Konsolunda bir Java Uygulaması olarak çalıştırın ve aşağıdaki gibi sonuçlanacaksınız.

Programın üzerinde çalışan herhangi bir sorunla karşılaşırsanız veya String, StringBuffer ve StringBuilder arasında herhangi bir sorunuz olursa bana bildirin.