Key Difference – 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 väl har skapats är det inte möjligt att ändra dem. Varje gång en ändring sker i strängen, skapar den en ny sträng. Även om det är en sammanlänkning till en befintlig sträng skapar det en ny sträng. Detta orsakar minnesförlust. Klasserna StringBuffer och StringBuilder i Java används för att modifiera String. Den viktigaste skillnaden mellan String, StringBuffer och StringBuilder i Java är att 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 Strings som ger trådsäkerhet, och StringBuilder är en klass som används för att modifiera strängar som inte ger gängsäkerhet.
Vad är String i Java?
String-klassen är i java.lang-paketet. Varje gång programmeraren skapar en String är det ett objekt av typen String. Strängar är oföränderlig betydelse när objektet väl har skapats, det kan inte ändras. Objekt skapade med hjälp av omslagsklasser som Integer, Byte, Float, Double är också oföränderliga. En bokstavlig sträng är omgiven av dubbla citattecken. t.ex. "Hej världen". Varje gång en bokstavssträng skapas kontrollerar Java Virtual Machine (JVM) strängkonstantpoolen. Om strängen finns returneras en referens till strängkonstantpoolen. Om det är en ny sträng skapas det objektet i strängens konstantpool.
Figur 01: Java-program som använder String, StringBuffer och StringBuilder
Se nedanstående kod.
String s1=“Hej”;
s1=s1 + “World”;
System.out.println(s1);
I det första påståendet syftar s1 på "Hej" i strängkonstantpoolen. I det andra uttalandet ändrar inte JVM den befintliga strängen. Istället skapar den en ny sträng som "Hello World" och s1 hänvisar nu till den nya strängen. Det avslutande "Hello"-objektet finns fortfarande i String-konstantpoolen.
Om det finns en kod som är, String s1=”Hej”;
String s2=s1;
s1, s2 kommer båda att hänvisa till String-objektet "Hello".
Vad är StringBuffer i Java?
StringBuffer-klassen används för att göra String-objekt föränderliga. Därför kan dessa objekt modifieras. StringBuffer definierar fyra konstruktörer. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Se koden nedan, StringBuffer s1=new StringBuffer(“Hej”);
s1.append(“World”);
System.out.println(s1);
I sats 1 syftar s1 på "Hello"-objektet i en hög. Objektet är föränderligt eftersom det skapas med StringBuffer. I påstående 2 läggs "World" till samma "Hello"-strängobjekt.
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äkerhet minskar StringBuffer-prestanda. StringBuffer-klassen innehåller metoder som append(), insert(), reverse(), replace().
Vad är StringBuilder i Java?
StringBuilder-klassen används för att göra String-objekt föränderliga. Därför kan dessa objekt modifieras. Funktionaliteten liknar StringBuffer, men detta ger inte trådsäkerhet. StringBuilder har konstruktorer som StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Se koden nedan.
StringBuilder s1=new StringBuilder(“Hej”);
s1.append(“World”);
System.out.println(s1);
I sats 1 syftar s1 på "Hello"-objektet i en hög. Objektet är föränderligt eftersom det skapas med StringBuilder. I påstående 2 läggs "World" till samma "Hello"-strängobjekt. Det finns inget skapat av ett helt nytt String-objekt.
Stringobjekt skapade med StringBuilder-klassen kan spara minne. Till skillnad från i StringBuffer, tillhandahåller StringBuilder inte trådsäkerhet eftersom två trådar kan komma åt samma metod i StringBuilder-klassen samtidigt. StringBuilder-klassen innehåller metoder som append(), insert(), reverse(), replace().
Vad är likheten mellan String, 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 |
|
String | Strängen är en Java-klass som används för att skapa ett objekt av typen String, som är en sekvens av tecken. |
StringBuffer | StringBuffer är en Java-klass som används för att skapa String-objekt, som kan modifieras med trådsäkerhet. |
StringBuilder | StringBuilder är en klass som används för att skapa strängobjekt, som kan modifieras utan trådsäkerhet. |
Föränderlighet | |
String | Strängen är en oföränderlig klass. |
StringBuffer | StringBuffer är en föränderlig klass. |
StringBuilder | StringBuilder är en föränderlig klass. |
Trådsäkerhet | |
String | Methods of String är trådsäkra. |
StringBuffer | Methods of StringBuffer är trådsäkra och synkroniserade. |
StringBuilder | StringBuilders metoder är inte trådsäkra och inte synkroniserade. |
Prestanda | |
String | Snöret är snabbt. |
StringBuffer | StringBuffer är långsam. |
StringBuilder | 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 modifiera Strings och ge trådsäkerhet, medan StringBuilder är en klass som används för att modifiera strängar som inte ger trådsäkerhet.
Ladda ned PDF String vs StringBuffer vs StringBuilder i Java
Du kan ladda ner PDF-versionen av den här artikeln och använda den för offlineändamål enligt citat. Ladda ner PDF-versionen här Skillnaden mellan String StringBuffer och StringBuilder i Java