Forskellen mellem StringBuffer og StringBuilder

Forskellen mellem StringBuffer og StringBuilder

Java giver tre klasser til at repræsentere en sekvens af tegn: String, StringBuffer og StringBuilder. String-klassen er en uforanderlig klasse, mens StringBuffer- og StringBuilder-klasserne er foranderlige. Der er mange forskelle mellem StringBuffer og StringBuilder. StringBuilder-klassen er introduceret siden JDK 1.5.

En liste over forskelle mellem StringBuffer og StringBuilder er givet nedenfor:

Forskellen mellem StringBuffer og StringBuilder
Ingen. StringBuffer StringBuilder
1) StringBuffer er synkroniseret dvs trådsikker. Det betyder, at to tråde ikke kan kalde StringBuffers metoder samtidigt. StringBuilder er ikke-synkroniseret altså ikke trådsikker. Det betyder, at to tråde kan kalde StringBuilders metoder samtidigt.
2) StringBuffer er mindre effektiv end StringBuilder. StringBuilder er mere effektivt end StringBuffer.
3) StringBuffer blev introduceret i Java 1.0 StringBuilder blev introduceret i Java 1.5

Eksempel på StringBuffer

BufferTest.java

//Java-program til at demonstrere brugen af ​​StringBuffer-klassen. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(buffer); } }

Produktion:

 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); } }  

Produktion:

 hellojava  

Ydelsestest af StringBuffer og StringBuilder

Lad os se koden for at kontrollere ydelsen af ​​StringBuffer og StringBuilder klasser.

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