Nøgleforskel - String vs StringBuffer vs StringBuilder i Java
String, StringBuffer og String Builder er klasser i Java. String bruges i vid udstrækning i Java-programmering. Når et objekt af streng er oprettet, er det ikke muligt at ændre dem. Hver gang der sker en ændring af strengen, opretter den en ny streng. Selvom det er en sammenkædning til en eksisterende streng, opretter den en ny streng. Dette medfører spild af hukommelse. StringBuffer- og StringBuilder-klasser i Java bruges til at ændre String. Hovedforskellen mellem String, StringBuffer og StringBuilder i Java er, at String er en klasse for at oprette et objekt af typen String, der er en række af tegn, StringBuffer er en klasse, der bruges til at ændre strenge, der giver trådsikkerhed, og StringBuilder er en klasse, der bruges til at ændre strenge, der ikke giver trådsikkerhed.
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 StuffBuffer og StringBuilder i Java
6. Sammenligning side om side - String vs StringBuffer vs StringBuilder i Java i tabelformular
7. Oversigt
Hvad er streng i Java?
Strengklassen er i java.lang-pakke. Hver gang programmøren opretter en streng, er det et objekt af typen streng. Strenge er uforanderlig betydning, når objektet er oprettet, kan det ikke ændres. Objekter oprettet ved hjælp af indpakningsklasser som Integer, Byte, Float, Double er også uforanderlige. En strenglitteratur er omsluttet af dobbelt anførselstegn. f.eks. “Hej verden”. Hver gang en streng bogstavelig oprettes, kontrollerer Java Virtual Machine (JVM) strengkonstruktionspuljen. Hvis strengen findes, returneres en henvisning til strengkonstruktionspuljen. Hvis det er en ny streng, oprettes det objekt i den konstante pulje streng.
Figur 01: Java-program ved hjælp af String, StringBuffer og StringBuilder
Se nedenstående stykke kode.
String s1 = “Hej”;
s1 = s1 + “Verden”;
System.out.println (s1);
I den første erklæring henviser s1 til “Hej” i streng-puljen konstant. I den anden erklæring ændrer JVM ikke den eksisterende streng. I stedet opretter det en ny streng som "Hello World", og s1 henviser nu til den nye streng. Det spændende "Hello" -objekt eksisterer stadig i streng-puljen.
Hvis der er en kode, der er, Streng s1 =”Hej”;
Streng s2 = s1;
s1, s2 begge vil henvise til strengobjektet “Hej”.
Hvad er StringBuffer i Java?
StringBuffer-klassen bruges til at gøre String-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 = ny StringBuffer (“Hej”);
s1.append (“Verden”);
System.out.println (s1);
I sætning 1 henviser s1 til "Hello" -objektet i en bunke. Objektet kan ændres, fordi det oprettes ved hjælp af StringBuffer. I erklæring 2 tilføjes "Verden" til det samme "Hej" strengobjekt.
Strengobjekter oprettet med StringBuffer-klassen kan spare hukommelse. StringBuffer giver trådsikkerhed, fordi to tråde ikke kan få adgang til den samme metode i StringBuffer-klassen samtidigt. Trådsikkerhed mindsker StringBuffers ydeevne. StringBuffer-klassen indeholder metoder som append (), insert (), reverse (), erstatt ().
Hvad er StringBuilder i Java?
StringBuilder-klassen bruges til at gøre String-objekter mutable. Derfor kan disse objekter ændres. Funktionaliteten ligner StringBuffer, men dette giver ikke trådsikkerhed. StringBuilder har konstruktører som StringBuilder (), StringBuilder (int størrelse), StringBuilder (String str).
Se nedenstående kode.
StringBuilder s1 = ny StringBuilder (“Hej”);
s1.append (“Verden”);
System.out.println (s1);
I sætning 1 henviser s1 til "Hello" -objektet i en bunke. Objektet kan ændres, fordi det oprettes ved hjælp af StringBuilder. I erklæring 2 tilføjes "Verden" til det samme "Hej" strengobjekt. Der er ingen oprettelse af helt nyt strengobjekt.
Strengobjekter oprettet med StringBuilder-klassen kan spare hukommelse. I modsætning til i StringBuffer giver StringBuilder ikke trådsikkerhed, fordi to tråde kan få adgang til den samme metode i StringBuilder-klassen samtidigt. StringBuilder-klassen indeholder metoder som append (), insert (), reverse (), erstatt ().
Hvad er ligheden mellem String, StringBuffer og StringBuilder i Java?
Alt kan bruges til at oprette strenge
Hvad er forskellen mellem String StringBuffer og StringBuilder i Java?
Diff artikel midt foran bordet
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 trådsikkerhed. |
StringBuilder | StringBuilder er en klasse, der bruges til at oprette strengobjekter, som kan ændres uden trådsikkerhed. |
Ændring | |
Snor | Strengen er en uforanderlig klasse. |
StringBuffer | StringBuffer er en ændret klasse. |
StringBuilder | StringBuilder er en ændret klasse. |
Trådsikkerhed | |
Snor | Metoder for streng er trådsikre. |
StringBuffer | Metoder til StringBuffer er trådsikre og synkroniserede. |
StringBuilder | Metoder til StringBuilder er ikke trådede sikre og synkroniseres ikke. |
Ydeevne | |
Snor | Strengen er hurtig. |
StringBuffer | StringBuffer er langsom. |
StringBuilder | StringBuilder er hurtig. |
Resumé - 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 strenge og give trådsikkerhed, mens StringBuilder er en klasse, der bruges til at ændre strenge, som ikke giver trådsikkerhed.
Download PDF String vs StringBuffer vs StringBuilder i Java
Du kan downloade PDF-version af denne artikel og bruge den til offlineformål som pr. Citatnote. Download venligst PDF-version her Forskellen mellem String StringBuffer og StringBuilder i Java