StringBuilder vs concaténation de Chaîne dans toString() en Java

Donné le 2 toString() implémentations ci-dessous, qui est préférée:

public String toString(){
    return "{a:"+ a + ", b:" + b + ", c: " + c +"}";
}

ou

public String toString(){
    StringBuilder sb = new StringBuilder(100);
    return sb.append("{a:").append(a)
          .append(", b:").append(b)
          .append(", c:").append(c)
          .append("}")
          .toString();
}

?

Plus important, étant donné que nous n'avons que 3 biens qu'il ne peut pas faire une différence, mais à quel point voulez-vous passer de + concat à StringBuilder?

  • À quel point pensez-vous passer à StringBuilder? Quand il les effets de la mémoire ou de la performance. Ou quand il peut. Si vous êtes vraiment seulement faire cela pour un couple de chaînes une fois, pas de soucis. Mais si vous allez faire encore et encore, vous devriez voir une différence mesurable lors de l'utilisation de StringBuilder.
  • quelle est la moyenne de 100 en paramètre?
  • 100 est la taille initiale de StringBuilder
  • De sorte que le nombre de caractères maximum sera de 100?
  • non seulement la taille initiale, si vous savez la taille approximative de la chaîne que vous faites affaire avec, alors vous pouvez dire StringBuilder la taille à allouer l'avance sinon il sera, si elle est à court d'espace, de doubler la taille par la création d'une nouvelle char[] tableau puis copier les données de plus - ce qui est coûteux. Vous pouvez tricher en donnant la taille et il n'est pas nécessaire pour cette création de la matrice - donc, si vous pensez que votre chaîne sera de ~100 caractères vous pouvez ensuite régler le StringBuilder de cette taille et il ne sera jamais amené à développer en interne.
  • Documents connexes: stackoverflow.com/documentation/java/109/strings/5280/...
  • c'est même intellij-support.jetbrains.com/hc/en-us/community/posts/...

InformationsquelleAutor non sequitor | 2009-10-07