String, StringBuffer ve String Builder, Java'daki sınıflardır. String, Java programlamasında yaygın olarak kullanılır. Bir String nesnesi oluşturulduktan sonra bunları değiştirmek mümkün değildir. String'de her değişiklik gerçekleştiğinde yeni bir String oluşturur. Varolan bir String ile birleştirme olsa bile yeni bir String oluşturur. Bu bellek israfına neden olur. Java'da StringBuffer ve StringBuilder sınıfları, String'i değiştirmek için kullanılır. temel fark Java'da String, StringBuffer ve StringBuilder arasında String, karakter dizisi olan String türünde bir nesne oluşturmak için bir sınıftır; StringBuffer, iş parçacığı güvenliği sağlayan Dizeleri değiştirmek için kullanılan bir sınıftır ve StringBuilder, iş parçacığı güvenliği sağlamayan Dizeleri değiştirmek için kullanılan bir sınıftır.
1. Genel Bakış ve Temel Fark
2. Java'da Dize nedir
3. Java'da StringBuffer nedir
4. Java'da StringBuilder nedir
5. String StringBuffer ve Java'da StringBuilder Arasındaki Benzerlikler
6. Yan Yana Karşılaştırma - Dize vs StringBuffer vs StringBuilder Java Tabular Form
7. Özet
String sınıfı java.lang paketindedir. Programcı bir String oluşturduğunda, String türünde bir nesnedir. Dizeler, nesne oluşturulduktan sonra değiştirilemez, değiştirilemez. Tamsayı, Byte, Float, Double gibi sarmalayıcı sınıfları kullanılarak oluşturulan nesneler de değiştirilemez. Bir dize hazır bilgisi çift tırnak içine alınır. Örneğin. "Selam Dünya". Bir dize hazır bilgisi her oluşturulduğunda, Java Sanal Makinesi (JVM) Dize sabit havuzunu denetler. Dize varsa, Dize sabit havuzuna bir başvuru döndürülür. Yeni bir String ise, bu nesne String sabit havuzunda oluşturulur.
Şekil 01: String, StringBuffer ve StringBuilder kullanan Java programı
Aşağıdaki kod parçasına bakın.
String s1 = “Merhaba”;
s1 = s1 + “Dünya”;
System.out.println (s1);
İlk ifadede, s1, String sabit havuzundaki “Hello” ya atıfta bulunuyor. İkinci ifadede, JVM varolan Dizeyi değiştirmez. Bunun yerine, “Hello World” olarak yeni bir String oluşturur ve s1 şimdi bu yeni String'e atıfta bulunmaktadır. Mevcut "Hello" nesnesi, String sabit havuzunda hala var.
Eğer bir kod varsa,
String s1 = ”Merhaba”;
Dize s2 = s1;
s1, s2 her ikisi de “Hello” String nesnesine atıfta bulunacaktır.
StringBuffer sınıfı, String nesnelerini değiştirilebilir yapmak için kullanılır. Bu nedenle, bu nesneler değiştirilebilir. StringBuffer dört kurucu tanımlar. StringBuffer (), StringBuffer (int boyutu), StringBuffer (String str), StringBuffer (charSequence [] ch)
Aşağıdaki kodu inceleyin,
StringBuffer s1 = yeni StringBuffer (“Merhaba”);
s1.append ( “Dünya”);
System.out.println (s1);
İfade 1'de, s1 bir yığındaki “Merhaba” nesnesine atıfta bulunur. Nesne, StringBuffer kullanılarak oluşturulduğundan değiştirilebilir. 2. açıklamada, “Dünya” aynı “Merhaba” String nesnesine eklenir.
StringBuffer sınıfıyla oluşturulan dize nesneleri belleği kaydedebilir. İki iş parçacığı StringBuffer sınıfındaki aynı yönteme aynı anda erişemediği için StringBuffer iş parçacığı güvenliği sağlar. İş parçacığı güvenliği StringBuffer performansını azaltır. StringBuffer sınıfı, append (), insert (), reverse (), replace () gibi yöntemler içerir.
StringBuilder sınıfı, String nesnelerini değiştirilebilir yapmak için kullanılır. Bu nedenle, bu nesneler değiştirilebilir. İşlev, StringBuffer'a benzer, ancak iş parçacığı güvenliği sağlamaz. StringBuilder, StringBuilder (), StringBuilder (int size), StringBuilder (String str) gibi yapıcılara sahiptir.
Aşağıdaki koda bakın.
StringBuilder s1 = new StringBuilder (“Merhaba”);
s1.append ( “Dünya”);
System.out.println (s1);
İfade 1'de, s1 bir yığındaki “Merhaba” nesnesine atıfta bulunur. Nesne, StringBuilder kullanılarak oluşturulduğu için değiştirilebilir. 2. açıklamada, “Dünya” aynı “Merhaba” String nesnesine eklenir. Tamamen yeni bir String nesnesi oluşturulmaz.
StringBuilder sınıfıyla oluşturulan dize nesneleri belleği kaydedebilir. StringBuffer'ın tersine, StringBuilder, iş parçacığı güvenliği sağlamaz, çünkü iki iş parçacığı StringBuilder sınıfındaki aynı yönteme aynı anda erişebilir. StringBuilder sınıfı append (), insert (), reverse (), replace () gibi yöntemler içerir.
String vs StringBuffer vs StringBuilder | |
sicim | Dize, karakter dizisi olan String türünde bir nesne oluşturmak için kullanılan bir Java sınıfıdır. |
StringBuffer | StringBuffer, iş parçacığı güvenliği ile değiştirilebilen String nesneleri oluşturmak için kullanılan bir Java sınıfıdır. |
StringBuilder | StringBuilder, iş parçacığı güvenliği olmadan değiştirilebilen dize nesneleri oluşturmak için kullanılan bir sınıftır. |
mutability | |
sicim | Dize değişmez bir sınıftır. |
StringBuffer | StringBuffer değiştirilebilir bir sınıftır. |
StringBuilder | StringBuilder değiştirilebilir bir sınıftır. |
İplik Güvenliği | |
sicim | String yöntemleri iş parçacığı için güvenlidir. |
StringBuffer | StringBuffer yöntemleri iş parçacığı için güvenli ve senkronize. |
StringBuilder | StringBuilder yöntemleri iş parçacığı için güvenli değil ve eşitlenmez. |
Verim | |
sicim | Dize hızlı. |
StringBuffer | StringBuffer yavaş. |
StringBuilder | StringBuilder hızlı. |
String, StringBuffer ve StringBuilder aynı gibi görünür, ancak farklı anlamları vardır. Bunların hepsi Java sınıflarıdır. Java'da String, StringBuffer ve StringBuilder arasındaki fark, String'in bir karakter kümesi olan String türünde bir nesne oluşturmak için sınıf olması, StringBuffer, Dizeleri değiştirmek ve iş parçacığı güvenliği sağlamak için kullanılan bir sınıftır; StringBuilder ise iplik güvenliği sağlamayan Dizeleri değiştirmek için kullanılan sınıf.
Bu makalenin PDF sürümünü indirebilir ve alıntı notuna göre çevrimdışı amaçlar için kullanabilirsiniz. Lütfen PDF sürümünü buradan indirin Java'da String StringBuffer ve StringBuilder Arasındaki Fark
1. “String vs StringBuffer vs StringBuilder.” JournalDev, 30 Temmuz 2017. Buradan ulaşılabilir
2. “Java Aç.” Örnek: String, StringBuilder ve StringBuffer Sınıfları Arasındaki Fark: Java | Java Aç. Burada mevcut
3.tutorialspoint.com. “Java Dizeleri.” Nokta. Burada mevcut