Pour faire la copie se produire en tête à des moments prévisibles, vous pouvez exécuter explicitement une méthode qui fait la copie se produire, comme StringBuffer.setLength (). Cela permet StringBuffers être réutilisés à des inconvénients de performance.The plus prévisibles de la mise en œuvre de cordes sont1. Ne pas être capable de dériver cordes signifie qu'il est impossible d'ajouter un comportement à cordes pour votre propre besoins2. Le point précédent signifie que tous les accès doit se faire par l'ensemble restreint de méthodes Cordes actuellement disponibles, en imposant overhead.
3 supplémentaire. La seule façon d'augmenter le nombre de méthodes permettant la manipulation efficace de caractères chaîne est de copier les caractères dans votre propre réseau et de les manipuler directement, auquel cas cordes impose une étape supplémentaire et objets supplémentaires Vous ne pouvez pas need.4. Char tableaux sont plus rapides à traiter directly.5. Le couplage étroit avec le tampon chaîne peut conduire à l'utilisation de mémoire étonnamment élevé.
Lorsque StringBuffer toString () crée une chaîne, le tableau sous-jacent actuel détient la chaîne, indépendamment de la taille de la matrice (ie, la capacité de la StringBuffer). Par exemple, un StringBuffer avec une capacité de 10.000 caractères peut construire une chaîne de 10 caractères. Toutefois, cette chaîne de 10 caractères continue à utiliser un tableau 10.000-char pour stocker les 10 caractères.
Si le StringBuffer est maintenant réutilisé pour créer une autre chaîne de 10 caractères, le StringBuffer crée d'abord un nouveau réseau interne 10000-char pour construire la chaîne avec; puis la nouvelle chaîne utilise également ce tableau 10.000-char pour stocker les 10 caractères. De toute évidence, ce processus peut se poursuivre indéfiniment, en utilisant de grandes quantités de mémoire où pas expected.The avantages de chaînes peuvent être résumées comme