logo

Rozdíl mezi StringBuffer a StringBuilder

Java poskytuje tři třídy reprezentující posloupnost znaků: String, StringBuffer a StringBuilder. Třída String je neměnná třída, zatímco třídy StringBuffer a StringBuilder jsou proměnlivé. Mezi StringBuffer a StringBuilder je mnoho rozdílů. Třída StringBuilder je zavedena od JDK 1.5.

Seznam rozdílů mezi StringBuffer a StringBuilder je uveden níže:

Rozdíl mezi StringBuffer a StringBuilder
Ne.StringBufferStringBuilder
1)StringBuffer je synchronizované tedy bezpečné pro vlákno. Znamená to, že dvě vlákna nemohou volat metody StringBuffer současně.StringBuilder je nesynchronizované tj. není bezpečné pro vlákno. To znamená, že dvě vlákna mohou volat metody StringBuilderu současně.
2)StringBuffer je méně efektivní než StringBuilder.StringBuilder je Efektivnější než StringBuffer.
3)StringBuffer byl představen v Javě 1.0StringBuilder byl představen v Javě 1.5

Příklad StringBuffer

BufferTest.java

//Java Program pro demonstraci použití třídy StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('ahoj'); buffer.append('java'); System.out.println(buffer); } }

Výstup:

 hellojava 

Příklad StringBuilder

BuilderTest.java

android proces acore
 //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); } } 

Výstup:

 hellojava 

Test výkonu StringBuffer a StringBuilder

Podívejme se na kód pro kontrolu výkonu tříd StringBuffer a StringBuilder.

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