You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

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

 

StringBuilder
public class Test{
    public static void main(String args[]){

       StringBuilder sBuilder = new StringBuilder("Testing ");
       sBuilder.append("simple usage of ");
       sBuilder.append("StringBuilder");


       System.out.println(sBuilder);  
   }
}

 

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 på slutten av en StringB.
  • reverse() - Reverserer StringB'en metoden blir kalt på.
  • delete(int start, int end) - Sletter elementene i StringB'en fra og med start, til (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 fra start til end med s.

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

  • No labels