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.
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
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".
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 ().
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 ().
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. |
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.
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
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." Punkten. Tillgänglig här