0Pricing
Java Academy · Ders

StringBuilder ve StringBuffer

İş parçacığı güvenliği ödünleşimleri

StringBuilder ve StringBuffer, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

İki Değiştirilebilir Sınıf

Java'da iki değiştirilebilir dize sınıfı vardır: StringBuilder ve StringBuffer. Arayüzleri neredeyse aynıdır, ancak çok önemli bir noktada farklılaşırlar: iş parçacığı güvenliği.

Aynı Arayüz

Her iki sınıf da append, insert, delete, reverse ve diğer metotları sunar. Birini kullanan kod, genellikle yalnızca tür adını değiştirerek diğerine geçirilebilir.

public class Main {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello").append(", ").append("World");
        System.out.println(sb);
    }
}

StringBuffer Eşzamanlılaştırılmıştır

StringBuffer metotları eşzamanlılaştırılmıştır; bu, birden çok iş parçacığının aynı örneği güvenle değiştirebileceği anlamına gelir. Bu güvenliğin küçük bir performans maliyeti vardır.

public class Main {
    public static void main(String[] args) {
        StringBuffer buffer = new StringBuffer("thread-safe");
        buffer.append("!");
        System.out.println(buffer);
    }
}

StringBuilder Eşzamanlı Değildir

StringBuilder eşzamanlamayı kullanmaz, bu da onu daha hızlı hâle getirir. Bunun karşılığında, dışarıdan eşgüdüm sağlanmadan tek bir örneği iş parçacıkları arasında paylaşmak güvenli değildir.

public class Main {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder("fast");
        builder.append("!");
        System.out.println(builder);
    }
}

StringBuilder Ne Zaman Kullanılmalı

Yaygın durumda StringBuilder kullanın: dizeleri tek bir metot veya iş parçacığı içinde oluştururken. Günlük kodların neredeyse tamamı için varsayılan seçim budur.

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            sb.append("#");
        }
        System.out.println(sb);
    }
}

StringBuffer Ne Zaman Kullanılmalı

StringBuffer'a yalnızca aynı oluşturucu örneği gerçekten paylaşılıyor ve birden çok iş parçacığı tarafından değiştiriliyorsa başvurun. Uygulamada bu durum nadirdir.

public class Main {
    public static void main(String[] args) {
        StringBuffer shared = new StringBuffer("log: ");
        shared.append("event A; ");
        shared.append("event B");
        System.out.println(shared);
    }
}

Yerel Değişkenler Paylaşılmaz

Yalnızca bir yöntemin içinde bildirilen ve kullanılan bir oluşturucu diğer iş parçacıkları tarafından hiçbir zaman görülemez; bu nedenle orada StringBuilder her zaman uygun seçimdir. Eşzamanlamanın olmaması sorun oluşturamaz.

public class Main {
    static String build() {
        StringBuilder sb = new StringBuilder();
        sb.append("local only");
        return sb.toString();
    }
    public static void main(String[] args) {
        System.out.println(build());
    }
}

Performans Farkı

StringBuffer içindeki eşzamanlama ek yükü, tek iş parçacıklı kullanımda onu yavaşlatır. Sıkı döngülerde StringBuilder daha yüksek performans sunar.

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 100000; i++) {
            sb.append('x');
        }
        System.out.println("Built length: " + sb.length());
    }
}

Tarihçe Notu

StringBuffer Java'nın ilk dönemlerinde ortaya çıktı. StringBuilder, yaygın tek iş parçacıklı kullanım için eşzamanlanmamış ve daha hızlı bir alternatif olarak Java 5'e eklendi.

Doğru Seçimi Yapma

Varsayılan olarak StringBuilder kullanın. Yalnızca tek bir örneğin iş parçacıkları arasında paylaşıldığını kanıtlayabildiğinizde StringBuffer'a geçin. Aksi hâlde ihtiyacınız olmayan güvenliğin bedelini ödersiniz.

public class Main {
    public static void main(String[] args) {
        StringBuilder result = new StringBuilder();
        result.append("Use StringBuilder ").append("by default");
        System.out.println(result);
    }
}

İkisi de String'e Dönüştürür

Her iki sınıf da toString() aracılığıyla değişmez bir String üretir. Aralarındaki seçim yalnızca oluşturma aşamasını etkiler, nihai sonucu etkilemez.

public class Main {
    public static void main(String[] args) {
        String a = new StringBuilder("one").toString();
        String b = new StringBuffer("two").toString();
        System.out.println(a + " " + b);
    }
}

Hızlı Kontrol

StringBuilder ile StringBuffer arasındaki temel fark nedir?

Özet

Şu farkları öğrendiniz:

  • İkisinin de neredeyse aynı uygulama programlama arayüzleri vardır
  • StringBuffer eşzamanlanmıştır (iş parçacığı güvenlidir, daha yavaştır)
  • StringBuilder eşzamanlanmamıştır (daha hızlıdır)
  • Tek iş parçacıklı oluşturma işlemlerinde varsayılan olarak StringBuilder kullanın
  • StringBuffer'ı yalnızca gerçekten paylaşılan örnekler için kullanın

Sıkça Sorulan Sorular

“StringBuilder ve StringBuffer” dersi ücretsiz mi?

Evet — “StringBuilder ve StringBuffer” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“StringBuilder ve StringBuffer” dersinde ne öğreneceğim?

İş parçacığı güvenliği ödünleşimleri Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“StringBuilder ve StringBuffer” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Dizeler Neden Değişmezdir
  2. StringBuilder ile Dize Oluşturma
  3. StringBuilder İşlevleri
  4. StringBuilder ve StringBuffer
← Java Academy Sayfasına Dön