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:
NIE. | Bufor ciągów | Konstruktor 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.0 | StringBuilder 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('Java'); 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;>
10000;>