logo

Różnica między StringBuffer i StringBuilder

Java udostępnia trzy klasy reprezentujące sekwencję znaków: String, StringBuffer i StringBuilder. Klasa String jest klasą niezmienną, podczas gdy klasy StringBuffer i StringBuilder są modyfikowalne. Istnieje wiele różnic między StringBuffer i StringBuilder. Klasa StringBuilder została wprowadzona od wersji JDK 1.5.

Lista różnic między StringBuffer i StringBuilder znajduje się poniżej:

Różnica między StringBuffer i StringBuilder
NIE.Bufor ciągówKonstruktor ciągów
1)StringBuffer jest zsynchronizowane tj. bezpieczne dla wątków. Oznacza to, że dwa wątki nie mogą jednocześnie wywoływać metod StringBuffer.StringBuilder jest niezsynchronizowane tj. nie jest bezpieczny dla wątków. Oznacza to, że dwa wątki mogą jednocześnie wywoływać metody StringBuilder.
2)StringBuffer jest mniej wydajne niż StringBuilder.StringBuilder jest bardziej wydajny niż StringBuffer.
3)StringBuffer został wprowadzony w Javie 1.0StringBuilder został wprowadzony w Javie 1.5

Przykład StringBuffera

BuforTest.java

//Program Java demonstrujący użycie klasy StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer bufor=nowy StringBuffer('hello'); bufor.append('Java'); System.out.println(bufor); } }

Wyjście:

 hellojava 

Przykład StringBuilder’a

BuilderTest.java

formuła murarska
 //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); } } 

Wyjście:

 hellojava 

Test wydajności StringBuffer i StringBuilder

Zobaczmy kod sprawdzający wydajność klas StringBuffer i 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;>