logo

Différence entre StringBuffer et StringBuilder

Java fournit trois classes pour représenter une séquence de caractères : String, StringBuffer et StringBuilder. La classe String est une classe immuable alors que les classes StringBuffer et StringBuilder sont mutables. Il existe de nombreuses différences entre StringBuffer et StringBuilder. La classe StringBuilder est introduite depuis JDK 1.5.

Une liste des différences entre StringBuffer et StringBuilder est donnée ci-dessous :

Différence entre StringBuffer et StringBuilder
Non.StringBufferGénérateur de chaînes
1)StringBuffer est synchronisé c'est-à-dire thread-safe. Cela signifie que deux threads ne peuvent pas appeler les méthodes de StringBuffer simultanément.StringBuilder est non synchronisé c'est-à-dire pas thread-safe. Cela signifie que deux threads peuvent appeler les méthodes de StringBuilder simultanément.
2)StringBuffer est moins efficace que StringBuilder.StringBuilder est plus efficace que StringBuffer.
3)StringBuffer a été introduit dans Java 1.0StringBuilder a été introduit dans Java 1.5

Exemple de StringBuffer

BufferTest.java

// Programme Java pour démontrer l'utilisation de la classe StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(tampon); } }

Sortir:

 hellojava 

Exemple de StringBuilder

BuilderTest.java

caractère en int java
 //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); } } 

Sortir:

 hellojava 

Test de performances de StringBuffer et StringBuilder

Voyons le code pour vérifier les performances des classes StringBuffer et 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;>