Verschil tussen String StringBuffer en StringBuilder in Java

Belangrijkste verschil - String vs StringBuffer vs StringBuilder in Java
 

String, StringBuffer en String Builder zijn klassen in Java. String wordt veel gebruikt in Java-programmering. Nadat een object van String is gemaakt, is het niet mogelijk om deze te wijzigen. Telkens wanneer een wijziging in de tekenreeks wordt aangebracht, wordt een nieuwe reeks gemaakt. Zelfs als het een aaneenschakeling is van een bestaande reeks, maakt het een nieuwe reeks. Dit veroorzaakt geheugenverspilling. StringBuffer- en StringBuilder-klassen in Java worden gebruikt om String te wijzigen. De belangrijk verschil tussen String, StringBuffer en StringBuilder in Java is dat String is een klasse om een ​​object van het type String te maken dat een reeks tekens is, StringBuffer is een klasse die wordt gebruikt om strings te wijzigen die draadveiligheid biedt, en StringBuilder is een klasse die wordt gebruikt om strings te wijzigen die geen threadveiligheid bieden.

INHOUD

1. Overzicht en belangrijkste verschil
2. Wat is String in Java
3. Wat is StringBuffer in Java
4. Wat is StringBuilder in Java
5. Overeenkomsten tussen String StringBuffer en StringBuilder in Java
6. Vergelijking zij aan zij - String vs StringBuffer versus StringBuilder in Java in tabelvorm
7. Samenvatting

Wat is String in Java?

Stringklasse bevindt zich in het pakket java.lang. Elke keer dat de programmeur een string maakt, is deze een object van het type String. Strings zijn onveranderlijke betekenis zodra het object is gemaakt, kan het niet worden gewijzigd. Objecten gemaakt met wrapper-klassen zoals Integer, Byte, Float, Double zijn ook onveranderbaar. Een letterlijke string staat tussen dubbele aanhalingstekens. bijv. "Hallo Wereld". Elke keer dat een letterlijke tekenreeks wordt gemaakt, controleert de Java Virtual Machine (JVM) de String-constante pool. Als de tekenreeks bestaat, wordt een verwijzing naar de String-constante pool geretourneerd. Als het een nieuwe tekenreeks is, wordt dat object gemaakt in de constante pool String.

Figuur 01: Java-programma met behulp van String, StringBuffer en StringBuilder

Raadpleeg het onderstaande stuk code.

String s1 = "Hallo";

s1 = s1 + "Wereld";

System.out.println (s1);

In de eerste instructie verwijst s1 naar de "Hallo" in de String-constante pool. In de tweede instructie wijzigt JVM de bestaande tekenreeks niet. In plaats daarvan maakt het een nieuwe reeks als "Hallo wereld" en verwijst s1 nu naar die nieuwe reeks. Het spannende "Hallo" -object bestaat nog steeds in de String-constante pool.

Als er een code is die dat is,

String s1 = "Hallo";

String s2 = s1;

s1, s2 verwijzen allebei naar het String-object "Hallo".

Wat is StringBuffer in Java?

StringBuffer-klasse wordt gebruikt om String-objecten te wijzigen. Daarom kunnen die objecten worden gewijzigd. StringBuffer definieert vier constructors. StringBuffer (), StringBuffer (int-formaat), StringBuffer (String str), StringBuffer (charSequence [] ch)

Raadpleeg de onderstaande code,

StringBuffer s1 = nieuwe StringBuffer ("Hallo");

s1.append ( “World”);

System.out.println (s1);

In statement 1 verwijst s1 naar het "Hallo" -object in een heap. Het object kan worden gewijzigd omdat het is gemaakt met behulp van StringBuffer. In statement 2 wordt "World" toegevoegd aan hetzelfde "Hello" String-object.

Stringobjecten die met de StringBuffer-klasse zijn gemaakt, kunnen geheugen besparen. StringBuffer biedt threadbeveiliging omdat twee threads niet tegelijkertijd toegang hebben tot dezelfde methode in de StringBuffer-klasse. De veiligheid van de thread vermindert de prestaties van de StringBuffer. StringBuffer-klasse bevat methoden zoals append (), insert (), reverse (), replace ().

Wat is StringBuilder in Java?

StringBuilder-klasse wordt gebruikt om objecten String te wijzigen. Daarom kunnen die objecten worden gewijzigd. De functionaliteit is vergelijkbaar met StringBuffer, maar dit biedt geen threadveiligheid. StringBuilder heeft constructors zoals StringBuilder (), StringBuilder (int size), StringBuilder (String str).

Raadpleeg de onderstaande code.

StringBuilder s1 = nieuwe StringBuilder ("Hallo");

s1.append ( “World”);

System.out.println (s1);

In statement 1 verwijst s1 naar het "Hallo" -object in een heap. Het object kan worden gewijzigd omdat het is gemaakt met StringBuilder. In statement 2 wordt "World" toegevoegd aan hetzelfde "Hello" String-object. Er is geen volledig nieuw String-object gemaakt.

Stringobjecten die met de StringBuilder-klasse zijn gemaakt, kunnen geheugen besparen. In tegenstelling tot StringBuffer biedt StringBuilder geen threadveiligheid omdat twee threads tegelijkertijd dezelfde methode in de StringBuilder-klasse kunnen gebruiken. De klasse StringBuilder bevat methoden zoals append (), insert (), reverse (), replace ().

Wat is de similariteit tussen tekenreeks, StringBuffer en StringBuilder in Java?

  • Alles kan worden gebruikt om strings te maken.

Wat is het verschil tussen String StringBuffer en StringBuilder in Java?

String vs StringBuffer versus StringBuilder

Draad De tekenreeks is een Java-klasse die wordt gebruikt om een ​​object van het type String te maken, wat een reeks tekens is.
StringBuffer StringBuffer is een Java-klasse die wordt gebruikt om String-objecten te maken, die kunnen worden gewijzigd met threadbeveiliging.
StringBuilder StringBuilder is een klasse die wordt gebruikt om tekenreeksobjecten te maken die kunnen worden gewijzigd zonder threadbeveiliging.
veranderlijkheid
Draad De string is een onveranderlijke klasse.
StringBuffer StringBuffer is een veranderbare klasse.
StringBuilder StringBuilder is een veranderbare klasse.
Thread-veiligheid
Draad Methoden voor String zijn thread safe.
StringBuffer Methoden van StringBuffer zijn thread-safe en gesynchroniseerd.
StringBuilder Methoden van StringBuilder zijn niet veilig en niet gesynchroniseerd.
Prestatie
Draad De reeks is snel.
StringBuffer StringBuffer is traag.
StringBuilder StringBuilder is snel.

Samenvatting - String vs StringBuffer vs StringBuilder in Java 

String, StringBuffer en StringBuilder lijken hetzelfde te zijn, maar ze hebben verschillende betekenissen. Dit zijn allemaal Java-klassen. Het verschil tussen String, StringBuffer en StringBuilder in Java is dat String een klasse is om een ​​object van het type String te maken. Dit is een set tekens. StringBuffer is een klasse die wordt gebruikt om strings te wijzigen en de threadveiligheid te bieden, terwijl StringBuilder een klasse die wordt gebruikt om strings te wijzigen die geen threadveiligheid biedt.

Download de PDF String vs StringBuffer vs StringBuilder in Java

U kunt de PDF-versie van dit artikel downloaden en gebruiken voor offline doeleinden, zoals per citaatnotitie. Download hier de PDF-versie Difference Between String StringBuffer en StringBuilder in Java

Referentie:

1. "String vs StringBuffer vs StringBuilder." JournalDev, 30 juli 2017. Beschikbaar Hier
2. "Java Hungry." Verschil tussen String, StringBuilder en StringBuffer Classes met Voorbeeld: Java | Java hongerig. Beschikbaar Hier 
3.tutorialspoint.com. "Java Strings." Het puntBeschikbaar Hier