logo

Rozdiel medzi StringBuffer a StringBuilder

Java poskytuje tri triedy reprezentujúce postupnosť znakov: String, StringBuffer a StringBuilder. Trieda String je nemenná trieda, zatiaľ čo triedy StringBuffer a StringBuilder sú meniteľné. Medzi StringBuffer a StringBuilder je veľa rozdielov. Trieda StringBuilder je zavedená od JDK 1.5.

Zoznam rozdielov medzi StringBuffer a StringBuilder je uvedený nižšie:

Rozdiel medzi StringBuffer a StringBuilder
NieStringBufferStringBuilder
1)StringBuffer je synchronizované t.j. bezpečné pre vlákna. Znamená to, že dve vlákna nemôžu súčasne volať metódy StringBuffer.StringBuilder je nesynchronizované t.j. nie sú bezpečné pre vlákna. Znamená to, že dve vlákna môžu súčasne volať metódy StringBuilder.
2)StringBuffer je menej efektívne ako StringBuilder.StringBuilder je viac efektívny než StringBuffer.
3)StringBuffer bol predstavený v Jave 1.0StringBuilder bol predstavený v Jave 1.5

Príklad StringBuffer

BufferTest.java

//Java Program na demonštráciu použitia triedy StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('ahoj'); buffer.append('java'); System.out.println(buffer); } }

Výkon:

 hellojava 

Príklad StringBuilder

BuilderTest.java

java miešanie do int
 //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ýkon:

 hellojava 

Test výkonnosti StringBuffer a StringBuilder

Pozrime sa na kód na kontrolu výkonu tried 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;>