Key Difference – String vs StringBuffer vs StringBuilder i Java
String, StringBuffer og String Builder er klasser i Java. String er mye brukt i Java-programmering. Når et objekt av String er opprettet, er det ikke mulig å endre dem. Hver gang det skjer en endring i strengen, opprettes en ny streng. Selv om det er en sammenkobling til en eksisterende streng, oppretter det en ny streng. Dette fører til sløsing med minne. StringBuffer- og StringBuilder-klasser i Java brukes til å endre String. Hovedforskjellen mellom String, StringBuffer og StringBuilder i Java er at String er en klasse for å lage et objekt av typen String som er en sekvens av tegn, StringBuffer er en klasse som brukes til å modifisere Strings som gir trådsikkerhet, og StringBuilder er en klasse som brukes til å modifisere strenger som ikke gir trådsikkerhet.
Hva er streng i Java?
String-klassen er i java.lang-pakken. Hver gang programmereren oppretter en streng, er det et objekt av typen String. Strenger er uforanderlig betydning når objektet er opprettet, det kan ikke endres. Objekter opprettet ved hjelp av wrapper-klasser som Integer, Byte, Float, Double er også uforanderlige. En streng bokstavelig er omgitt av doble anførselstegn. f.eks. "Hei Verden". Hver gang en streng bokstavelig opprettes, sjekker Java Virtual Machine (JVM) strengkonstantpoolen. Hvis strengen eksisterer, returneres en referanse til strengkonstantpoolen. Hvis det er en ny streng, opprettes objektet i strengkonstantpoolen.
Figur 01: Java-program som bruker String, StringBuffer og StringBuilder
Se koden nedenfor.
String s1=“Hei”;
s1=s1 + “World”;
System.out.println(s1);
I den første setningen refererer s1 til "Hallo" i strengkonstantpoolen. I den andre setningen endrer ikke JVM den eksisterende strengen. I stedet oppretter den en ny streng som "Hello World", og s1 refererer nå til den nye strengen. Det avsluttende «Hello»-objektet eksisterer fortsatt i strengkonstantpoolen.
Hvis det er en kode som er, String s1=”Hei”;
String s2=s1;
s1, s2 vil begge referere til String-objektet "Hello".
Hva er StringBuffer i Java?
StringBuffer-klassen brukes til å gjøre String-objekter mutbare. Derfor kan disse objektene endres. StringBuffer definerer fire konstruktører. StringBuffer(), StringBuffer(int size), StringBuffer(String str), StringBuffer (charSequence ch)
Se koden nedenfor, StringBuffer s1=new StringBuffer(“Hei”);
s1.append(“Verden”);
System.out.println(s1);
I setning 1 refererer s1 til "Hello"-objektet i en haug. Objektet kan endres fordi det er opprettet ved hjelp av StringBuffer. I setning 2 er "World" lagt til det samme "Hello"-strengobjektet.
String-objekter opprettet med StringBuffer-klassen kan spare minne. StringBuffer gir trådsikkerhet fordi to tråder ikke kan få tilgang til samme metode i StringBuffer-klassen samtidig. Trådsikkerhet reduserer StringBuffer-ytelsen. StringBuffer-klassen inneholder metoder som append(), insert(), reverse(), replace().
Hva er StringBuilder i Java?
StringBuilder-klassen brukes til å gjøre String-objekter mutbare. Derfor kan disse objektene endres. Funksjonaliteten ligner på StringBuffer, men dette gir ikke trådsikkerhet. StringBuilder har konstruktører som StringBuilder(), StringBuilder(int size), StringBuilder(String str).
Se koden nedenfor.
StringBuilder s1=new StringBuilder(“Hei”);
s1.append(“Verden”);
System.out.println(s1);
I setning 1 refererer s1 til "Hello"-objektet i en haug. Objektet kan endres fordi det er opprettet ved hjelp av StringBuilder. I setning 2 er "Verden" lagt til det samme "Hallo"-strengobjektet. Det er ingen opprettelse av et helt nytt strengobjekt.
Stringobjekter opprettet med StringBuilder-klassen kan spare minne. I motsetning til i StringBuffer, gir ikke StringBuilder trådsikkerhet fordi to tråder kan få tilgang til samme metode i StringBuilder-klassen samtidig. StringBuilder-klassen inneholder metoder som append(), insert(), reverse(), replace().
Hva er likheten mellom String, StringBuffer og StringBuilder i Java?
Alle kan brukes til å lage strenger
Hva er forskjellen mellom String StringBuffer og StringBuilder i Java?
String vs StringBuffer vs StringBuilder |
|
String | Strengen er en Java-klasse som brukes til å lage et objekt av typen String, som er en sekvens av tegn. |
StringBuffer | StringBuffer er en Java-klasse som brukes til å lage String-objekter, som kan modifiseres med trådsikkerhet. |
StringBuilder | StringBuilder er en klasse som brukes til å lage strengobjekter, som kan endres uten trådsikkerhet. |
Mutability | |
String | Strengen er en uforanderlig klasse. |
StringBuffer | StringBuffer er en foranderlig klasse. |
StringBuilder | StringBuilder er en foranderlig klasse. |
Trådsikkerhet | |
String | Methods of String er trådsikre. |
StringBuffer | Methods of StringBuffer er trådsikre og synkroniserte. |
StringBuilder | Methods of StringBuilder er ikke trådsikre og ikke synkronisert. |
Ytelse | |
String | Strengen er rask. |
StringBuffer | StringBuffer er treg. |
StringBuilder | StringBuilder er rask. |
Summary – String vs StringBuffer vs StringBuilder i Java
String, StringBuffer og StringBuilder ser ut til å være de samme, men de har forskjellige betydninger. Alle disse er Java-klasser. Forskjellen mellom String, StringBuffer og StringBuilder i Java er at String er klasse for å lage et objekt av typen String, som er et sett med tegn, StringBuffer er en klasse som brukes til å modifisere Strings og gi trådsikkerhet, mens StringBuilder er en klasse som brukes til å modifisere strenger som ikke gir trådsikkerhet.
Last ned PDF String vs StringBuffer vs StringBuilder i Java
Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til offline-formål i henhold til sitat. Last ned PDF-versjon her Forskjellen mellom String StringBuffer og StringBuilder i Java