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'); буфер.append('java'); System.out.println(буфер); }}

Изход:

 hellojava 

Пример за StringBuilder

BuilderTest.java

python печат до 2 знака след десетичната запетая
 //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;>