Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Excerpt

StringBuilder og StringBuffer inneholder som String-klassen en sekvens med tegn, men i motsetning til String så kan denne sekvense endres, ved å endre bytte ut enkelt-tegn, og skyte inn, legge til og fjerne tegnsekvenser.

StringBuilder og StringBuffer er StringBuffer og StringBuilder er klasser som brukes dersom man har behov for å gjøre et større antall manipulasjoner av strenger med characterssekvenser med tegn, altså datatypen char. Klassene vil ha vesentlig bedre ytelse enn ved kontinuerlig manipulasjon av en String. Som  Som man kan lese her, kan man ikke forandre en String, men  men bruke hele eller deler av innholdet til å lage en ny String. Ved å bruke StringBuffer eller StringBuilder StringBuilder og StringBuffer til å modifisere eller bygge en streng tegnsekvens over mange operasjoner kan man altså unngå å etterlate en stor mengde nye ubrukte String-objekter

...

. StringBuilder og StringBuffer er helt like i bruk (forskjellen har med muligheten for parallell bruk), og siden StringBuilder er litt raskere, så anbefales den til vanlig.

Code Block
languagejava

...

StringBuilder

...

 sb = new StringBuilder("Testing ");

...

sb.append("simple usage of ");

...

sb.append("StringBuilder");

...


...

System.out.println(

...

sb);

Viktige metoder

Følgende metoder er de mest vanlige:

 

Buffer vs Builder

Forskjellen mellom de to klassene er i all hovedsak at StringBuffer er synkronisert, og StringBuilder er ikke. Dette vil si at StringBuffer er sikker i bruk på tvers av tråder (Threads), men siden dette sjeldent er en problemstilling ble StringBuilder-klassen innført, bare uten synkroniseringen. Dette fører til at en StringBuilder i nesten alle tilfeller er raskere enn en StringBuffer, og foretrekkes dersom man kan se bort fra trådsikkerhet. 

Viktige metoder

I tillegg til at StringBuilder omtrent er å regne som "én-tråds-versjonen" av StringBuffer, har klassene nesten identisk API og de følgende metodene er gjeldende for begge.

  • append(String s) Legger til s (eller String.valueOf(o)) på slutten av en StringB.reverse
  • insert(int offset, String s) - Reverserer StringB'en metoden blir kalt på. - Setter inn s på posisjon offset
  • delete(int start, int end) - Sletter elementene i StringB'en tegnene fra og med starttil (men ikke med) end
  • insert(int offset, String s) - Setter inn s på posisjon offset
  • replace(int start, int end, String s) - Erstatter en substring tegnsekvensen fra start start til end med send med s.

For append, insert og replace finnes det varianter for andre datatyper enn String, som bruker String.valueOf, slik at en effektivt kan legge inn en toString()-verdien til alle objekter og verdier i en StringBuilder/StringBuffer.

Mer om StringBuilder og   StringBuffer, samt  samt full oversikt over metoder finnes her.