logo

Різниця між StringBuffer і StringBuilder

Java надає три класи для представлення послідовності символів: String, StringBuffer і StringBuilder. Клас String є незмінним класом, тоді як класи StringBuffer і StringBuilder є змінними. Існує багато відмінностей між StringBuffer і StringBuilder. Клас StringBuilder представлено з JDK 1.5.

Нижче наведено список відмінностей між StringBuffer і StringBuilder:

Різниця між StringBuffer і StringBuilder
Немає.StringBufferStringBuilder
1)StringBuffer є синхронізовано тобто потокобезпечний. Це означає, що два потоки не можуть викликати методи StringBuffer одночасно.StringBuilder є несинхронізовані тобто небезпечно для потоків. Це означає, що два потоки можуть викликати методи StringBuilder одночасно.
2)StringBuffer є менш ефективний ніж StringBuilder.StringBuilder є більш ефективний ніж StringBuffer.
3)StringBuffer був представлений у Java 1.0StringBuilder було представлено в Java 1.5

Приклад StringBuffer

BufferTest.java

//Програма Java для демонстрації використання класу StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(буфер); }}

Вихід:

 hellojava 

Приклад StringBuilder

BuilderTest.java

синтаксис git pull
 //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); } } 

Вихід:

 hellojava 

Перевірка продуктивності StringBuffer і StringBuilder

Давайте подивимося код для перевірки продуктивності класів StringBuffer і 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;>