logo

Diferența dintre StringBuffer și StringBuilder

Java oferă trei clase pentru a reprezenta o secvență de caractere: String, StringBuffer și StringBuilder. Clasa String este o clasă imuabilă, în timp ce clasele StringBuffer și StringBuilder sunt mutabile. Există multe diferențe între StringBuffer și StringBuilder. Clasa StringBuilder este introdusă începând cu JDK 1.5.

O listă a diferențelor dintre StringBuffer și StringBuilder este prezentată mai jos:

Diferența dintre StringBuffer și StringBuilder
Nu.StringBufferStringBuilder
1)StringBuffer este sincronizate adică sigur pentru fir. Înseamnă că două fire nu pot apela simultan metodele StringBuffer.StringBuilder este nesincronizate adică nu este sigură pentru fire. Înseamnă că două fire pot apela simultan metodele StringBuilder.
2)StringBuffer este mai putin eficient decât StringBuilder.StringBuilder este mai eficient decât StringBuffer.
3)StringBuffer a fost introdus în Java 1.0StringBuilder a fost introdus în Java 1.5

Exemplu StringBuffer

BufferTest.java

//Program Java pentru a demonstra utilizarea clasei StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(buffer); } }

Ieșire:

 hellojava 

Exemplu StringBuilder

BuilderTest.java

java int pentru a dubla
 //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); } } 

Ieșire:

 hellojava 

Testul de performanță al StringBuffer și StringBuilder

Să vedem codul pentru a verifica performanța claselor 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;>