Java - String vs StringBuffer

Cet article montre la différence de temps nécessaire pour des opérations similaires sur un objet String et un objet` StringBuffer`.

  1. String étant une classe immuable, il instancie un nouvel objet chaque

temps une opération est effectuée sur elle . StringBuffer étant une classe mutable, la surcharge d’objet

L’instanciation pendant les opérations est supprimée. Par conséquent, le temps nécessaire aux opérations est inférieur à celui de String

1. Chaîne vs StringBuffer

Comparons maintenant le temps d’exécution pris par les classes String et` StringBuffer` pour ajouter 10 000 caractères.

TimeTester.java

package com.techfou;

public class TimeTester{

    public static void main(String[]args) {

        String aString = "";
        long before = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            aString = aString + "x";
        }
        long after = (System.currentTimeMillis());
        System.out.println("Execution Time for String: " + (after - before));

        before = System.currentTimeMillis();
        StringBuffer aStringBuffer = new StringBuffer();
        for (int i = 0; i < 10000; i++) {
            aStringBuffer.append("x");
        }
        after = (System.currentTimeMillis());
        System.out.println("Execution Time for StringBuffer: " + (after - before));

    }

}

En exécutant le code ci-dessus, vous obtenez la sortie ci-dessous. La sortie peut varier en fonction de la vitesse de votre processeur. Comme on peut le voir clairement, il faut 128 millisecondes pour ajouter 10 000 chaînes à un objet chaîne.

En comparaison, StringBuffer ne prend que 11 millisecondes pour que cela se produise.

Execution Time for String: 128
Execution Time for StringBuffer: 11

Cela prouve que quand il s’agit de temps, StringBuffer est plus rapide que` String`. Cependant, la propriété immuable de String le rend thread-safe.

2. Conclusion

Pour conclure, on peut dire que StringBuffer est un meilleur choix que` String` si vous connaissez bien sa syntaxe et les fonctions fournies par la classe. C’est plus rapide et modifiable. String est limité à une utilisation dans des situations nécessitant des objets en lecture seule ou nécessitant une manipulation de chaînes.

Références

  1. % E2% 80% 9Dhttp://www.javaworld.com/article/2076072/build-ci-sdlc/stringbuffer-versus-string.html%E2%80%9D[Why

StringBuffer est plus rapide que String]. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html [String

comme java docs]

lien://tag/string/[string]lien://tag/stringbuffer/[stringbuffer]