Forskjellen mellom StringBuffer og StringBuilder

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. StringBuffer StringBuilder
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.0 StringBuilder 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

 //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;>