StringBuilder vs StringBuffer: qual a diferença e o que é melhor usar em Java?
Olá a todos! Comecei a estudar Java e frequentemente me deparo com situações em que preciso concatenar muitas strings, especialmente em loops. No começo, eu usava concatenação normal com `+`, mas li que isso é ineficiente e que é melhor usar `StringBuilder` ou `StringBuffer`.
No entanto, estou confuso: qual é a diferença entre eles? Parece que ambos fazem a mesma coisa — permitem montar uma string sem criar objetos desnecessários. Escrevi um pequeno exemplo, mas não entendo qual escolher:
```java
public class Test {
public static void main(String[] args) {
// Opção 1
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append("número ").append(i).append(", ");
}
String result1 = sb.toString();
// Opção 2
StringBuffer sbf = new StringBuffer();
for (int i = 0; i < 1000; i++) {
sbf.append("número ").append(i).append(", ");
}
String result2 = sbf.toString();
}
}
```