StringBuffer ve StringBuilder: StringBuffer ve StringBuilder Arasındaki Fark

Yayınlanan: 2020-10-20

Java'da programlama yaparken, Strings en çok kullanılan sınıflardan biridir. Bir String, bir karakter dizisini temsil etmek istediğinizde kullanılan bir nesnedir. Birkaç özelliği vardır ve bunlardan biri değişmezliktir, yani değiştirilemezler. Java'da String Buffers ve String Builders bu sorunu çözmek için tanıtıldı. Bu sınıfları kullanarak, değişiklikler tekrar tekrar yapılabilir.

Bu yazıda, bu sınıfların her ikisini de inceleyeceğiz ve aralarındaki farkları tartışacağız. Sınıflara dalmadan önce, Java'daki string kavramına aşina olacağız.

İçindekiler

Java'daki dizeler

Java'da dizeler, bir dizi karakter değerini depolamak için kullanılır. Java programlama dilinde nesneler olarak kabul edilirler. Dizeleri oluşturmak ve işlemek için çeşitli seçeneklerimiz var.

Bir dize oluşturmak için temel sözdizimi aşağıdaki gibidir:

Dize cümle = “Merhaba dünya!”;

Dizelerin bazı özellikleri vardır ve bunlardan biri değiştirilemez olmalarıdır , yani değiştirilemezler. Ama ya değiştirilebilecek bir dize istiyorsanız. Bunun için String Buffers ve String Builders adlı Java modifikasyonları kullanılır. Artık stringlerin ne olduğunu anladığımıza göre karşılaştırmamıza geçebiliriz.

Mutlaka Okuyun: Java Projesi Fikirleri ve Konuları

Dünyanın En İyi Üniversitelerinden Online Yazılım Kursları Öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

StringBuffer

String Buffer, değişkenlik gibi özellikler vererek dizelere daha fazla işlevsellik eklemek için Java'da kullanılan bir sınıf değişikliğidir. Dizeleri değiştirmek için append(), insert(), reverse(), replace() gibi yöntemleri kullanabiliriz. StringBuffer'ın dört tanımlı kurucusu vardır; bunlar aşağıdaki gibidir:

  • StringBuffer(): Bu, 16 karakter kapasiteli, hiçbir özelliği olmayan boş bir dize arabelleği oluşturur.
  • StringBuffer(CharSequence chars ): Belirtilen CharSequence ile aynı karakterleri içeren bir StringBuffer oluşturur.
  • StringBuffer(int size): Bu, belirtilen bir başlangıç ​​kapasitesine sahip hiçbir karakter içermeyen bir StringBuffer oluşturur.
  • StringBuffer(String str ): Başlangıçta belirtilen bir dize ile bir StringBuffer nesnesi oluşturur.

Belirli bir dizeyi değiştirmek için StringBuffer'da kullanabileceğimiz farklı yöntemlerden bazılarını tartışalım:

  • Uzunluk() ve kapasite(): Bir StringBuffer'ın mevcut uzunluğu uzunluk() yöntemi yardımıyla bulunabilir, toplam kapasiteyi bulmak için ise kapasite() yöntemini kullanırız.
  • append(): append() yöntemi, dizeyi diğer veya benzer veri türleri ile birleştirmek için kullanılır. Bu yöntemi kullanarak bir dizeye dizeler, sayılar ve nesneler ekleyebiliriz.
  • Insert (): Bu yöntem, bir dizeyi başka bir dizeye eklemek için kullanılır.
  • charAt(): Bu yöntem, bir StringBuffer'daki tek bir karakterin değerini bulmak için kullanılır.

Dizeleri ihtiyaçlarımıza göre değiştirmek için StringBuffer'ı nasıl kullanabileceğimizi görebiliriz. Peki StringBuffer ile böyle bir işlevsellik elde edebilecekken neden StringBuilder kullanıyoruz?

Öğrenin: Yeni Başlayanlar İçin En Popüler 20 Android Projesi Fikirleri ve Konusu

StringBuilder

Java'daki StringBuilder, değişken karakter dizisidir. StringBuilder, dizelerin değişmez olduğunu bildiğimiz için değiştirilebilen dizeler oluşturmak için alternatif bir sınıf sağlar. StringBuffer'a çok benzer , ancak bu ikisinin farklı olduğu yer senkronizasyonda. StringBuilder senkronize değil, bu da iş parçacığı için güvenli olmadığı anlamına geliyor. StringBuilder ayrıca dört tanımlı kurucuya sahiptir; bunlar aşağıdaki gibidir:

  • StringBuilder(): 16 karakterlik bir odaya sahip boş bir StringBuilder oluşturur.
  • StringBuilder(int size): Belirtilen boyutta boş bir dize oluşturur.
  • StringBuilder(CharSequence seq): Belirtilen CharSequence ile aynı karakterleri içeren bir StringBuilder oluşturur.
  • StringBuilder(String str ): Başlangıçta belirtilen bir string str ile bir String Builder nesnesi oluşturur.

StringBuilders üzerinde kullanabileceğimiz yöntemlerden bazılarını tartışalım:

  • append(): Bu yöntem, dize, sayı veya nesne olsun, dizeye bir şey eklemek istediğinizde kullanılır.
  • Değiştir (): Bir karakter dizisini başka bir karakter kümesinden değiştirecekseniz, replace() yöntemini kullanabilirsiniz.
  • Substring(): Bir stringin bir kısmını alacaksanız, substring() metodunu kullanarak onu elde edebilirsiniz.

Gördüğümüz gibi StringBuffer ve StringBuilder aynı görünüyor. Benzer işlevlere sahip olsalar da oldukça farklıdırlar ve çoğu durumda diğerini kullanmak yerine birini kullanmanız daha iyi olabilir.

İki sınıf arasındaki farklar

senkronizasyon

Varsayılan olarak, StringBuffer senkronize edilir, oysa StringBuilder herhangi bir senkronizasyona sahip değildir. Dizeye birden çok iş parçacığı tarafından erişilmesi gerektiği ve harici senkronizasyon uygulanmadığı durumlarda, StringBuilder değil StringBuffer kullanmanız gerekir.

iplik güvenli

StringBuilder iş parçacığı için güvenli bir sınıf değildir, oysa StringBuffer bu özelliğe sahiptir; bunun nedeni StringBuffer'ın senkronize edilmiş olmasıdır.

Hız

Yukarıdaki iki özellik nedeniyle, StringBuffer, StringBuilder'a kıyasla daha yavaştır. Bu nedenle, daha hızlı performans elde etmek istiyorsanız ve yukarıdaki özelliklere ihtiyacınız yoksa, StringBuilder'ın hızı ve verimliliği onu daha iyi bir seçim haline getirir.

StringBuilder wad, Java 1.5'te StringBuffer'ın eksikliğini analiz ederek tanıtıldı ve öncekinin performansı etkileyebileceği belirli durumlarda kullanılmasını uygun kılan yeterli değişikliğe sahip.

Performans ve Bellek Tüketimi

Yukarıdaki noktalardan öğrenebileceğimiz gibi, StringBuilder, performans söz konusu olduğunda StringBuffer'a kıyasla daha hızlıdır. İkisi arasındaki Bellek Tüketimi, StringBuffer'ın ikincisine kıyasla daha fazla bellek tükettiği yerlerde de farklıdır.

Ayrıca Okuyun: En İyi 130+ Java Mülakat Soruları ve Cevapları

toparlamak

StringBuilder, StringBuffer gibi string sınıfına bir alternatif olarak sınıflandırılsa da, kullanım söz konusu olduğunda çok daha esnektir.

Gördüğünüz gibi, varsayılan olarak değişmez bir karakter kümesi olan dizeleri değiştirmek istiyorsanız, dizeleri değiştirme yeteneği sağlayan StringBuffer veya StringBuilder sınıflarını kullanmanız gerekir. Her iki sınıf da yüzeyde benzer, gördüğünüz gibi aynı yöntemleri ve benzer kurucuları kullanıyorlar.

İkisi arasındaki fark, senkronizasyon ve iş parçacığına bağlıdır. İş parçacığı güvenliğini önemsemediğiniz bir ortamda çalışıyorsanız, çok daha hızlı ve verimli olacağı için StringBuilder'ı kullanabilirsiniz, ancak iş parçacığı güvenliğine ihtiyacınız varsa, StringBuffer'ı senkronize ve iş parçacığı olarak kullanmalısınız. güvenli.

Java, full-stack yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik zorlu eğitim sunan Yazılım Geliştirme - Siber Güvenlikte Uzmanlık Yönetici PG Programına göz atın. 9+ proje ve ödev, IIIT-B Mezun statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Hayalinizdeki İşe Yer Açın

Bilgisayar Bilimleri Yüksek Lisansına Başvurun