Je vais essayer d'expliquer ceci avec quelques exemples.
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
System.out.println(sb.length());
System.out.println(sb.capacity());
}
}
length()
- la longueur de la séquence de caractères dans le générateur puisque ce stringbuilder ne contient aucun contenu, sa longueur sera 0.
capacity()
- le nombre de places de caractères qui ont été attribués . Lorsque vous essayez de construire un Stringbuilder avec du contenu vide, il prend par défaut la taille de l'initialisation en tant que length + 16, soit 0 + 16. donc la capacité reviendrait 16 ici.
Remarque: La capacité, renvoyée par la méthode capacity(), est toujours supérieure ou égale à la longueur (généralement supérieure à) et s'étendra automatiquement si nécessaire pour prendre en compte les ajouts au générateur de chaînes.
La logique derrière la fonction de la capacité:
- Si vous n'initialisez pas stringbuilder avec tout contenu, la capacité par défaut sera prise comme capacité 16 caractères.
- Si vous initialisez stringbuilder avec n'importe quel contenu, la capacité sera de longueur +16.
- Lorsque vous ajoutez un nouveau contenu à l'objet stringbuilder, si la capacité actuelle n'est pas suffisante pour prendre une nouvelle valeur, elle augmente (capacité de la matrice précédente + 1) * 2.
Cette analyse est extrais actual StringBuilder.java code
Pourquoi vous souciez-vous de la 'capacité '? Il se développe automatiquement pour accommoder tout ce qui est nécessaire. Vous pouvez jouer avec pour améliorer la performance, mais c'est toujours asymptotiquement linéaire. – polygenelubricants
Il y a des questions sur la «capacité» par rapport à la «longueur» dans l'examen OCA, donc pour certaines personnes, le problème signifie beaucoup. –