Skillnad mellan String StringBuffer och StringBuilder i Java

Huvudskillnad - String vs StringBuffer vs StringBuilder i Java
 

String, StringBuffer och String Builder är klasser i Java. String används ofta i Java-programmering. När ett objekt av String har skapats är det inte möjligt att ändra dem. Varje gång en förändring sker i strängen skapar den en ny sträng. Även om det är en sammanfogning till en befintlig sträng skapar det en ny sträng. Detta förorsakar minnesförlust. StringBuffer och StringBuilder klasserna i Java används för att ändra String. De nyckelskillnad mellan String, StringBuffer och StringBuilder i Java är det String är en klass för att skapa ett objekt av typen String som är en sekvens av tecken, StringBuffer är en klass som används för att modifiera strängar som ger trådsäkerhet och StringBuilder är en klass som används för att modifiera strängar som inte ger trådsäkerhet.

INNEHÅLL

1. Översikt och nyckelskillnad
2. Vad är String i Java
3. Vad är StringBuffer i Java
4. Vad är StringBuilder i Java
5. Likheter mellan String StringBuffer och StringBuilder i Java
6. Jämförelse vid sida vid sida - String vs StringBuffer vs StringBuilder i Java i tabellform
7. Sammanfattning

Vad är String i Java?

Strängklassen finns i java.lang-paketet. Varje gång programmeraren skapar en sträng är det ett objekt av typen String. Strängar är oföränderliga, men när objektet är skapat kan det inte ändras. Objekt som skapats med inslagsklasser som heltal, byte, float, dubbel är också oföränderliga. En sträng bokstavlig är innesluten i dubbel citat. t.ex. "Hej världen". Varje gång en sträng bokstavligt skapad kontrollerar Java Virtual Machine (JVM) strängkonstanten poolen. Om strängen finns, returneras en referens till strängkonstantpoolen. Om det är en ny String, skapas det objektet i String konstant poolen.

Figur 01: Java-program med String, StringBuffer och StringBuilder

Se nedan stycket kod.

String s1 = "Hej";

s1 = s1 + "värld";

System.out.println (s1);

I det första uttalandet hänvisar s1 till "Hello" i String-konstantpoolen. I det andra uttalandet ändrar JVM inte den befintliga strängen. I stället skapar det en ny sträng som "Hello World" och s1 hänvisar nu till den nya strängen. Det spännande "Hello" -objektet finns fortfarande i strängkonstantpoolen.

Om det finns en kod som är,

String s1 = "Hej";

String s2 = s1;

s1, s2 båda kommer att referera till strängobjektet "Hello".

Vad är StringBuffer i Java?

StringBuffer-klassen används för att göra strängobjekten muterbara. Därför kan dessa objekt ändras. StringBuffer definierar fyra konstruktörer. StringBuffer (), StringBuffer (int storlek), StringBuffer (String str), StringBuffer (charSequence [] ch)

Se koden nedan,

StringBuffer s1 = ny StringBuffer ("Hello");

s1.append ( ”World”);

System.out.println (s1);

I uttalande 1 hänvisar s1 till "Hello" -objektet i en hög. Föremålet är muterbart eftersom det skapas med StringBuffer. I uttalande 2 bifogas "World" till samma "Hello" String-objekt.

Stringobjekt skapade med StringBuffer-klassen kan spara minne. StringBuffer ger trådsäkerhet eftersom två trådar inte kan komma åt samma metod i StringBuffer-klassen samtidigt. Trådsäkerheten minskar StringBuffers prestanda. StringBuffer-klassen innehåller metoder som tillägg (), infoga (), omvänd (), ersätta ().

Vad är StringBuilder i Java?

StringBuilder-klassen används för att göra strängobjekten muterbara. Därför kan dessa objekt ändras. Funktionen liknar StringBuffer, men det ger inte trådsäkerhet. StringBuilder har konstruktörer som StringBuilder (), StringBuilder (int storlek), StringBuilder (String str).

Se nedan koden.

StringBuilder s1 = ny StringBuilder ("Hello");

s1.append ( ”World”);

System.out.println (s1);

I uttalande 1 hänvisar s1 till "Hello" -objektet i en hög. Föremålet är muterbart eftersom det skapas med StringBuilder. I uttalande 2 bifogas "World" till samma "Hello" String-objekt. Det finns ingen skapande av helt nytt String-objekt.

Strängobjekt skapade med StringBuilder-klassen kan spara minne. Till skillnad från StringBuffer ger StringBuilder inte trådsäkerhet eftersom två trådar kan komma åt samma metod i StringBuilder-klassen samtidigt. StringBuilder-klassen innehåller metoder som tillägg (), infoga (), omvänd (), ersätta ().

Vad är likheten mellan sträng, StringBuffer och StringBuilder i Java?

  • Alla kan användas för att skapa strängar.

Vad är skillnaden mellan String StringBuffer och StringBuilder i Java?

String vs StringBuffer vs StringBuilder

Sträng Strängen är en Java-klass som används för att skapa ett objekt av typen String, vilket är en sekvens av tecken.
String StringBuffer är en Java-klass som används för att skapa strängobjekt, som kan modifieras med trådsäkerhet.
String StringBuilder är en klass som används för att skapa strängobjekt, som kan modifieras utan trådsäkerhet.
Föränderlighet
Sträng Strängen är en oföränderlig klass.
String StringBuffer är en muterbar klass.
String StringBuilder är en ömsesidig klass.
Trådsäkerhet
Sträng Metoder för sträng är trådsäkra.
String Metoder för StringBuffer är trådsäkra och synkroniserade.
String Metoder för StringBuilder är inte gängade säkra och inte synkroniserade.
Prestanda
Sträng Strängen är snabb.
String StringBuffer är långsam.
String StringBuilder är snabb.

Sammanfattning - String vs StringBuffer vs StringBuilder i Java 

String, StringBuffer och StringBuilder verkar vara samma, men de har olika betydelser. Alla dessa är Java-klasser. Skillnaden mellan String, StringBuffer och StringBuilder i Java är att String är klass för att skapa ett objekt av typen String, vilket är en uppsättning tecken. StringBuffer är en klass som används för att ändra strängar och ger trådsäkerhet, medan StringBuilder är en klass som används för att ändra strängar som inte ger trådsäkerhet.

Ladda ner PDF String vs StringBuffer vs StringBuilder i Java

Du kan hämta PDF-versionen av den här artikeln och använda den för offlineändamål enligt citationsnotat. Var god ladda ner PDF-version här Skillnaden mellan String StringBuffer och StringBuilder i Java

Referens:

1. "String vs StringBuffer vs StringBuilder." JournalDev, 30 juli 2017. Tillgänglig här
2. "Java Hungry." Skillnad mellan String, StringBuilder och StringBuffer-klasser med Exempel: Java | Java Hungry. Tillgänglig här 
3.tutorialspoint.com. "Java Strings." PunktenTillgänglig här