logo

Forskjellen mellom StringBuffer og StringBuilder

Java gir tre klasser for å representere en sekvens av tegn: String, StringBuffer og StringBuilder. String-klassen er en uforanderlig klasse, mens StringBuffer- og StringBuilder-klassene kan endres. Det er mange forskjeller mellom StringBuffer og StringBuilder. StringBuilder-klassen er introdusert siden JDK 1.5.

En liste over forskjeller mellom StringBuffer og StringBuilder er gitt nedenfor:

Forskjellen mellom StringBuffer og StringBuilder
Nei.StringBufferStringBuilder
1)StringBuffer er synkronisert dvs. trådsikker. Det betyr at to tråder ikke kan kalle metodene til StringBuffer samtidig.StringBuilder er ikke-synkronisert dvs ikke trådsikker. Det betyr at to tråder kan kalle metodene til StringBuilder samtidig.
2)StringBuffer er mindre effektiv enn StringBuilder.StringBuilder er mer effektivt enn StringBuffer.
3)StringBuffer ble introdusert i Java 1.0StringBuilder ble introdusert i Java 1.5

Eksempel på strengbuffer

BufferTest.java

//Java-program for å demonstrere bruken av StringBuffer-klassen. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hei'); buffer.append('java'); System.out.println(buffer); } }

Produksjon:

 hellojava 

Eksempel på StringBuilder

BuilderTest.java

palindromnummer
 //Java Program to demonstrate the use of StringBuilder class. public class BuilderTest{ public static void main(String[] args){ StringBuilder builder=new StringBuilder('hello'); builder.append('java'); System.out.println(builder); } } 

Produksjon:

 hellojava 

Ytelsestest av StringBuffer og StringBuilder

La oss se koden for å sjekke ytelsen til StringBuffer- og StringBuilder-klassene.

ConcatTest.java

 //Java Program to demonstrate the performance of StringBuffer and StringBuilder classes. public class ConcatTest{ public static void main(String[] args){ long startTime = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(&apos;Java&apos;); for (int i=0; i<10000; i++){ sb.append('tpoint'); } system.out.println('time taken by stringbuffer: ' + (system.currenttimemillis() - starttime) 'ms'); starttime="System.currentTimeMillis();" stringbuilder sb2="new" stringbuilder('java'); for (int i="0;" i<10000; sb2.append('tpoint'); stringbuilder: < pre> <p> <strong>Output:</strong> </p> <pre> Time taken by StringBuffer: 16ms Time taken by StringBuilder: 0ms </pre> <hr></10000;>