Tavsiye, 2024

Editörün Seçimi

Java'da String ve StringBuffer Sınıfı Arasındaki Fark

String ve StringBuffer, dizelerde çalışan sınıflardır. StringBuffer sınıfı, String sınıfının eş sınıfıdır. String sınıfının nesnesi sabit uzunluktadır. StringBuffer sınıfının nesnesi büyütülebilir. String ve StringBuffer arasındaki temel fark, “String” sınıfının nesnesinin değişmez olmasıdır . “StringBuffer” sınıfının nesnesi değiştirilebilir .

Karşılaştırma Tablosu

Karşılaştırma için temelsicimStringBuffer
TemelString nesnesinin uzunluğu sabittir.StringBuffer'ın uzunluğu arttırılabilir.
değişiklikDize nesnesi değişmez.StringBuffer nesnesi değişkendir.
performansBirleştirme sırasında daha yavaş.Birleştirme sırasında daha hızlıdır.
BellekDaha fazla hafıza tüketir.Daha az hafıza tüketir.
DepolamaDize sabiti havuzu.Öbek Hafıza.

String tanımı

“String” Java'da bir sınıftır. String sınıfının nesnesi sabit uzunluktadır ve en önemlisi, String sınıfının nesnesi “değiştirilemez” dir. String nesnesini başlattıktan sonra, o nesneyi tekrar değiştiremezsiniz. String sınıfının nesnesi String sabit havuzunda saklanır.

İlk önce, herhangi bir dizge yarattığınızda şunu anlayalım; string türünde bir nesne yaratırsınız. String sabitleri ayrıca string nesnelerdir.

 System.out.println ("Merhaba bu Teckpix Çözümü"); 

Yukarıdaki ifadede, “Merhaba bu Teckpix Çözümü” dizesi bir Dize sabitidir.

Şimdi String nesnesinin değişkenliğini bir örnek yardımıyla anlayalım.

 Str = yeni String ("Teckpix"); str.concat ( "Çözelti"); system.out.println (str); // Teckpix çıktı 

Yukarıdaki kodda, “Teckpix” ve “Solution” dizelerini birleştirmeye çalıştım. Bir dizge ne zaman oluşturulduğunu bildiğimiz gibi bu, String türünün nesnesinin yaratıldığı anlamına gelir. Bu nedenle, "Teckpix" dizgisi, referansı "str" ​​dizgisine atanmış bir nesne yaratır. Daha sonra, String sınıfının “concat ()” yöntemini kullanarak “Teckpix” dizesiyle başka bir “Çözüm” dizesini birleştirmeye çalıştım.

String nesneleri değişmez olduğu için, “Teckpix” dizesinde hiçbir değişiklik yapılmaz ve yeni “Solution” dizgisi sabit havuzunda başka bir nesne yaratır. Ancak, “Solution” nesnesine yapılan başvuru hiçbir nesne tarafından yakalanmaz, bu nedenle yine de string sabit havuzunda bulunmasına rağmen, Solution Solution başvurusu kaybedilir. Teckpix nesnesinde hiçbir değişiklik yapılmadığı için, daha önce Teckpix referansını atadığım str nesnesini yazdırdığımda, yalnızca “Teckpix” dizesini basacaktır.

StringBuffer'un tanımı

“StringBuffer” sınıfı, “String” sınıfının eş sınıfıdır. StringBuffer sınıfı, dizelere daha fazla işlev sağlar. StringBuffer sınıfının nesnesi, nesnesi üzerinde değişiklik yapılabilen değişkendir. StringBuffer nesnesinin uzunluğu büyütülebilir. Karakterleri veya alt dizileri, StringBuffer nesnesine atanan dize değişmezinin ortasına veya sonunda ekleyebilirsiniz. StringBuffer, belirli bir uzunluk istenmediğinde, 16 karakter daha yer ayırır.

StringBuffer nesnesinin değişkenliğini bir örnek yardımıyla anlayalım:

 StringBuffre Sb = yeni StringBuffer ("Teckpix"); Sb.append ( "Çözüm"); system.out.println (Sb); // Çıkış Teckpix Çözümü 

StringBuffer nesnesinin değişken olduğunu bildiğimiz gibi. Append () yöntemi, başlangıçta, "Teckpix" nesnesinin referansının daha önce atandığı StringBuffer nesnesini Sb değiştirir. Append () yöntemi, yeni bir hazır bilgi olan “Solution” dizgesini, “Teckpix” dizgesinin sonuna ekler. Şimdi Sb nesnesini yazdırdığımda, “Teckpix Solutions” olarak değiştirilen string nesnesini yazdıracak.

String ve StringBuffer Arasındaki Anahtar Fark

  1. String nesnesinin uzunluğu sabittir, ancak gerektiğinde bir StringBuffer nesnesinin uzunluğu arttırılabilir.
  2. String nesnesi değişmezdir, yani nesnesi tekrar atanamaz, oysa StringBuffer nesnesi değişkendir.
  3. String nesnesi performansta yavaştır, StringBuffer nesnesi daha hızlıdır.
  4. String nesnesi daha fazla bellek tüketir, StringBuffer nesneleri daha az bellek tüketir.
  5. Dize nesneleri sabit bir havuzda saklanırken, StringBuffer nesneleri yığın bellekte depolanır.

Sonuç:

StringBuffer nesneleri, String sınıfına kıyasla dizelere daha fazla işlev sağlar. Bu nedenle, String sınıfı yerine StringBuffer ile çalışmak tercih edilir.

Top