Anahtar Farkı – Java'da String vs StringBuffer vs StringBuilder
String, StringBuffer ve String Builder Java'daki sınıflardır. String, Java programlamada yaygın olarak kullanılmaktadır. Bir String nesnesi oluşturulduktan sonra bunları değiştirmek mümkün değildir. Dize'de her değişiklik meydana geldiğinde, yeni bir Dize oluşturur. Mevcut bir String'in bitişi olsa bile, yeni bir String oluşturur. Bu bellek israfına neden olur. Java'daki StringBuffer ve StringBuilder sınıfları, String'i değiştirmek için kullanılır. Java'da String, StringBuffer ve StringBuilder arasındaki temel fark, String'in bir karakter dizisi olan String türünde bir nesne oluşturmak için bir sınıf olmasıdır, StringBuffer, iş parçacığı güvenliği sağlayan String'leri değiştirmek için kullanılan bir sınıftır ve StringBuilder bir iş parçacığı güvenliği sağlamayan Dizeleri değiştirmek için kullanılan sınıf.
Java'da String nedir?
String sınıfı Java.lang paketindedir. Programcı her String oluşturduğunda, String türünde bir nesnedir. Dizeler değişmez, yani nesne oluşturulduktan sonra değiştirilemez. Integer, Byte, Float, Double gibi sarmalayıcı sınıfları kullanılarak oluşturulan nesneler de değişmezdir. Bir dize değişmezi çift tırnak içine alınır. Örneğin. "Selam Dünya". Bir dize değişmezi oluşturulduğunda, Java Sanal Makinesi (JVM), Dize sabit havuzunu kontrol eder. Dize varsa, Dize sabit havuzuna bir başvuru döndürülür. Yeni bir String ise, o 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 “Merhaba”dan bahsediyor. İkinci ifadede JVM, mevcut String'i değiştirmez. Bunun yerine, "Merhaba Dünya" olarak yeni bir Dize oluşturur ve s1 şimdi bu yeni Dize'ye atıfta bulunur. Çıkan "Merhaba" nesnesi, String sabit havuzunda hala var.
Bir kod varsa, String s1=”Merhaba”;
Dize s2=s1;
s1, s2 her ikisi de “Merhaba” String nesnesine atıfta bulunacaktır.
Java'da StringBuffer nedir?
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 size), StringBuffer(String str), StringBuffer (charSequence ch)
Aşağıdaki koda bakın, StringBuffer s1=new StringBuffer(“Merhaba”);
s1.append(“Dünya”);
System.out.println(s1);
1. ifadede, s1, bir yığındaki “Merhaba” nesnesine atıfta bulunuyor. Nesne, StringBuffer kullanılarak oluşturulduğu için değiştirilebilir. 2. ifadede, "World", aynı "Hello" String nesnesine eklenir.
StringBuffer sınıfıyla oluşturulan String nesneleri bellekten tasarruf edebilir. StringBuffer, iş parçacığı güvenliği sağlar çünkü iki iş parçacığı, StringBuffer sınıfında aynı yönteme aynı anda erişemez. İplik güvenliği, StringBuffer performansını düşürür. StringBuffer sınıfı, append(), insert(), reverse(), replace() gibi yöntemler içerir.
Java'da StringBuilder nedir?
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 bu, iş parçacığı güvenliği sağlamaz. StringBuilder'ın StringBuilder(), StringBuilder(int size), StringBuilder(String str) gibi yapıcıları vardır.
Aşağıdaki koda bakın.
StringBuilder s1=new StringBuilder(“Merhaba”);
s1.append(“Dünya”);
System.out.println(s1);
1. ifadede, s1, bir yığındaki “Merhaba” nesnesine atıfta bulunuyor. Nesne, StringBuilder kullanılarak oluşturulduğu için değiştirilebilir. 2. ifadede, "World", aynı "Hello" String nesnesine eklenir. Tamamen yeni bir String nesnesi oluşturulmaz.
StringBuilder sınıfıyla oluşturulan String nesneleri bellekten tasarruf edebilir. StringBuffer'dan farklı olarak, StringBuilder iş parçacığı güvenliği sağlamaz çünkü iki iş parçacığı StringBuilder sınıfında aynı yönteme aynı anda erişebilir. StringBuilder sınıfı, append(), insert(), reverse(), replace() gibi yöntemler içerir.
Java'da String, StringBuffer ve StringBuilder Arasındaki Benzerlik Nedir?
Tümü, Dizeler oluşturmak için kullanılabilir
Java'da String StringBuffer ve StringBuilder Arasındaki Fark Nedir?
String vs StringBuffer vs StringBuilder |
|
Dize | Dize, bir 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. |
Değişebilirlik | |
Dize | Dize değişmez bir sınıftır. |
StringBuffer | StringBuffer değişken bir sınıftır. |
StringBuilder | StringBuilder değişken bir sınıftır. |
İplik Güvenliği | |
Dize | Dize Yöntemleri iş parçacığı için güvenlidir. |
StringBuffer | StringBuffer yöntemleri iş parçacığı için güvenli ve senkronizedir. |
StringBuilder | StringBuilder yöntemleri iş parçacığı için güvenli değildir ve senkronize değildir. |
Performans | |
Dize | Dize hızlı. |
StringBuffer | StringBuffer yavaş. |
StringBuilder | StringBuilder hızlıdır. |
Özet – Java'da String vs StringBuffer vs StringBuilder
String, StringBuffer ve StringBuilder aynı görünüyor, ancak anlamları farklı. Bunların hepsi Java sınıflarıdır. Java'da String, StringBuffer ve StringBuilder arasındaki fark şudur: String, bir karakter kümesi olan String türünde bir nesne oluşturmak için sınıftır, StringBuffer, String'leri değiştirmek ve iş parçacığı güvenliğini sağlamak için kullanılan bir sınıftır, StringBuilder ise bir iş parçacığı güvenliği sağlamayan Dizeleri değiştirmek için kullanılan sınıf.
Java'da PDF String ve StringBuffer vs StringBuilder'ı indirin
Bu makalenin PDF sürümünü indirebilir ve alıntı notuna göre çevrimdışı amaçlarla kullanabilirsiniz. Lütfen PDF sürümünü buradan indirin Java'da String StringBuffer ve StringBuilder Arasındaki Fark