← Questões de Programação

Programação · CONSULPLAN · 2023

Questão comentada de Programação

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.

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.

Continue treinando

Questões relacionadas