Na linguagem de programação Java, a classe StringBuilder é empregada para criar e manipular informações de string dinâmica, ou seja, strings modificáveis. Em relação a tal classe, assinale a afirmativa correta.
- A)StringBuilders não são seguros para thread.
Correta: o StringBuilder não é thread-safe porque não é sincronizado.
- B)A classe StringBuilder fornece oito construtores.
Errada: a classe StringBuilder não possui oito construtores.
- C)O método length garante que um StringBuilder tenha pelo menos a capacidade especificada.
Errada: length informa o tamanho atual, enquanto a capacidade é tratada por outros mecanismos como capacity e ensureCapacity.
- D)Se a capacidade de um StringBuilder for excedida, há um estouro de buffer; pois a capacidade não se expande para acomodar mais caracteres.
Errada: a capacidade do StringBuilder pode aumentar automaticamente quando necessário.
- E)Em programas que frequentemente realizam a concatenação de strings, em geral, não se deve implementar as modificações com a classe StringBuilder, pois não há qualquer tipo de ganho.
Errada: em concatenações frequentes, o StringBuilder tende a melhorar o desempenho em relação ao uso repetido de String.
Gabarito: A
Em Java, o StringBuilder é a opção mais usada quando você precisa montar textos aos poucos, porque ele permite alterar o conteúdo sem criar um novo objeto a cada concatenação. Isso costuma deixar o código mais eficiente do que usar muitas operações com String, que são imutáveis. Pense nele como uma lousa em vez de papel fotográfico: você apaga e escreve de novo no mesmo espaço. O ponto central da questão é que o StringBuilder não é sincronizado, ou seja, não possui proteção para uso concorrente por múltiplas threads. Por isso, ele não é thread-safe. Se várias threads mexerem no mesmo objeto ao mesmo tempo, podem ocorrer inconsistências. Em cenários com concorrência, a alternativa clássica é o StringBuffer, que é sincronizado. As demais assertivas tentam confundir com características de capacidade, construtores e crescimento interno. O StringBuilder tem mais de um construtor, mas não oito, e sua capacidade pode ser ampliada automaticamente quando necessário, sem gerar overflow de buffer no uso normal. Também é justamente em concatenações frequentes que ele costuma trazer ganho de desempenho, e não o contrário. Então, o gabarito A está correto porque descreve a principal limitação prática do StringBuilder: ele não oferece segurança para acesso simultâneo entre threads. Essa é uma diferença clássica cobrada em concursos entre StringBuilder e StringBuffer.