Forskellen mellem String StringBuffer og StringBuilder i Java

Nøgleforskel - streng vs StringBuffer vs StringBuilder i Java
 

String, StringBuffer og String Builder er klasser i Java. Streng bruges i vid udstrækning i Java-programmering. Når et objekt med streng er oprettet, er det ikke muligt at ændre dem. Hver gang der sker en ændring af strengen, opretter den en ny streng. Selv om det er en sammenkædning til en eksisterende streng, opretter den en ny streng. Dette forårsager spild af hukommelsen. StringBuffer og StringBuilder klasser i Java bruges til at ændre streng. Det vigtigste forskel mellem String, StringBuffer og StringBuilder i Java er det String er en klasse til at oprette et objekt af typen String, der er en rækkefølge af tegn, StringBuffer er en klasse, der bruges til at ændre strenge, der giver tråd sikkerhed, og StringBuilder er en klasse, der bruges til at ændre strenge, der ikke giver tråd sikkerhed.

INDHOLD

1. Oversigt og nøgleforskel
2. Hvad er streng i Java
3. Hvad er StringBuffer i Java
4. Hvad er StringBuilder i Java
5. Ligheder mellem String StringBuffer og StringBuilder i Java
6. Sammenligning side ved side - String vs StringBuffer vs StringBuilder i Java i tabelform
7. Opsummering

Hvad er streng i Java?

String klasse er i java.lang pakke. Hver gang programmereren opretter en streng, er det et objekt af typen streng. Strenge har uforanderlig betydning, når først objektet er oprettet, kan det ikke ændres. Objekter oprettet ved hjælp af indpakningsklasser som heltal, Byte, Float, Double er også uforanderlige. En streng bogstavelig er indkapslet i dobbelt citater. f.eks. "Hej Verden". Hver gang der oprettes en streng bogstavelig, kontrollerer Java Virtual Machine (JVM) String konstant puljen. Hvis streng findes, returneres en henvisning til strengkonstant puljen. Hvis det er en ny streng, oprettes dette objekt i den konstante streng til pulsen.

Figur 01: Java-program ved hjælp af String, StringBuffer og StringBuilder

Se nedenstående kodestykke.

String s1 = “Hej”;

s1 = s1 + “Verden”;

System.out.println (s1);

I den første erklæring henviser s1 til “Hej” i String konstant puljen. I den anden erklæring ændrer JVM ikke den eksisterende streng. I stedet skaber det en ny streng som "Hello World" og s1 henviser nu til den nye streng. Det spændende “Hello” -objekt findes stadig i String konstant-puljen.

Hvis der er en kode, der er,

String s1 = ”Hej”;

Streng s2 = s1;

s1, s2 begge henviser til strengobjektet "Hej".

Hvad er StringBuffer i Java?

StringBuffer-klasse bruges til at gøre streng-objekter mutable. Derfor kan disse objekter ændres. StringBuffer definerer fire konstruktører. StringBuffer (), StringBuffer (int-størrelse), StringBuffer (String str), StringBuffer (charSequence [] ch)

Se koden nedenfor,

StringBuffer s1 = new StringBuffer (“Hej”);

s1.append ( ”World”);

System.out.println (s1);

I erklæring 1 henviser s1 til “Hello” -objektet i en bunke. Objektet er mutabelt, fordi det oprettes ved hjælp af StringBuffer. I erklæring 2 føjes "Verden" til det samme "Hej" streng-objekt.

Strengeobjekter oprettet med StringBuffer-klassen kan gemme hukommelse. StringBuffer giver trådssikkerhed, fordi to tråde ikke kan få adgang til den samme metode i StringBuffer-klassen samtidigt. Trådsikkerhedsfald StringBuffer-ydelse. StringBuffer-klasse indeholder metoder som tilføj (), indsæt (), omvendt (), erstat ().

Hvad er StringBuilder i Java?

StringBuilder-klassen bruges til at gøre streng-objekter mutable. Derfor kan disse objekter ændres. Funktionaliteten ligner StringBuffer, men dette giver ikke gevindssikkerhed. StringBuilder har konstruktører såsom StringBuilder (), StringBuilder (int størrelse), StringBuilder (String str).

Se nedenstående kode.

StringBuilder s1 = new StringBuilder (“Hej”);

s1.append ( ”World”);

System.out.println (s1);

I erklæring 1 henviser s1 til “Hello” -objektet i en bunke. Objektet er mutabelt, fordi det oprettes ved hjælp af StringBuilder. I erklæring 2 føjes "Verden" til det samme "Hej" streng-objekt. Der er ingen oprettelse af et helt nyt strengobjekt.

Strengeobjekter oprettet med StringBuilder-klassen kan gemme hukommelse. I modsætning til i StringBuffer leverer StringBuilder ikke gevindssikkerhed, fordi to tråde kan få adgang til den samme metode i StringBuilder-klassen samtidigt. StringBuilder-klassen indeholder metoder såsom tilføj (), indsæt (), omvendt (), erstat ().

Hvad er ligheden mellem String, StringBuffer og StringBuilder i Java?

  • Alle kan bruges til at oprette strenge.

Hvad er forskellen mellem String StringBuffer og StringBuilder i Java?

String vs StringBuffer vs StringBuilder

Snor Strengen er en Java-klasse, der bruges til at oprette et objekt af typen String, som er en sekvens af tegn.
StringBuffer StringBuffer er en Java-klasse, der bruges til at oprette strengobjekter, som kan ændres med gevindsikkerhed.
StringBuilder StringBuilder er en klasse, der bruges til at oprette strengobjekter, som kan ændres uden gevindsikkerhed.
foranderlighed
Snor Strengen er en uforanderlig klasse.
StringBuffer StringBuffer er en mutérbar klasse.
StringBuilder StringBuilder er en mutérbar klasse.
Tråd sikkerhed
Snor Metoder til streng er gevindsikre.
StringBuffer Metoder til StringBuffer er tråd-sikre og synkroniseret.
StringBuilder Metoder til StringBuilder er ikke trådbeskyttet og synkroniseres ikke.
Ydeevne
Snor Strengen er hurtig.
StringBuffer StringBuffer er langsom.
StringBuilder StringBuilder er hurtig.

Resume - String vs StringBuffer vs StringBuilder i Java 

String, StringBuffer og StringBuilder ser ud til at være de samme, men de har forskellige betydninger. Alle disse er Java-klasser. Forskellen mellem String, StringBuffer og StringBuilder i Java er, at String er klasse for at oprette et objekt af typen String, som er et sæt tegn, StringBuffer er en klasse, der bruges til at ændre strengene og give tråd sikkerhed, mens StringBuilder er en klasse, der bruges til at ændre strenge, der ikke giver gevindssikkerhed.

Download PDF String vs StringBuffer vs StringBuilder i Java

Du kan downloade PDF-version af denne artikel og bruge den til offline-formål som pr. Citatnotat. Download PDF-version her Forskel mellem String StringBuffer og StringBuilder i Java

Reference:

1. “String vs StringBuffer vs StringBuilder.” JournalDev, 30. juli 2017. Findes her
2. "Java sulten." Forskel mellem klassen String, Builder og StringBuffer med eksempel: Java | Java sulten. Tilgængelig her 
3.tutorialspoint.com. “Java-strenge.” Pointen. Tilgængelig her