logo

Diferença entre StringBuffer e StringBuilder

Java fornece três classes para representar uma sequência de caracteres: String, StringBuffer e StringBuilder. A classe String é uma classe imutável, enquanto as classes StringBuffer e StringBuilder são mutáveis. Existem muitas diferenças entre StringBuffer e StringBuilder. A classe StringBuilder foi introduzida desde o JDK 1.5.

Uma lista de diferenças entre StringBuffer e StringBuilder é fornecida abaixo:

Diferença entre StringBuffer e StringBuilder
Não.StringBufferStringBuilder
1)StringBuffer é sincronizado ou seja, thread-safe. Isso significa que dois threads não podem chamar os métodos de StringBuffer simultaneamente.StringBuilder é não sincronizado ou seja, não é seguro para threads. Isso significa que dois threads podem chamar os métodos do StringBuilder simultaneamente.
2)StringBuffer é menos eficiente do que StringBuilder.StringBuilder é mais eficiente do que StringBuffer.
3)StringBuffer foi introduzido em Java 1.0StringBuilder foi introduzido em Java 1.5

Exemplo de StringBuffer

BufferTest.java

//Programa Java para demonstrar o uso da classe StringBuffer. classe pública BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(buffer); } }

Saída:

 hellojava 

Exemplo de StringBuilder

BuilderTest.java

alinhar imagem css
 //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); } } 

Saída:

 hellojava 

Teste de desempenho de StringBuffer e StringBuilder

Vamos ver o código para verificar o desempenho das classes StringBuffer e 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;>