Classes

Strings

Classe imutável utilizada para representar sequências de caracteres, oferecendo diversas formas de construção.

Introdução

Na linguagem Java, existem três abordagens principais para trabalhar com cadeias de caracteres: String, StringBuilder e StringBuffer.
Essas classes oferecem diferentes características em termos de mutabilidade, desempenho e segurança em ambientes concorrentes.

A classe java.lang.String representa uma sequência de caracteres imutável e é fundamental na linguagem Java.
Ela pertence ao pacote java.lang e fornece múltiplas formas de criação de objetos, permitindo construir strings a partir de literais, arrays de caracteres, arrays de bytes e outros objetos.

String

  • String é uma classe imutável
  • Alterações aparentes geram novas instâncias
  • Literais são armazenados no String Pool
  • A classe oferece diversos construtores para criação explícita de objetos

Criação por literal (forma mais comum)

String texto = "Java";
  • Utiliza o String Pool
  • Reutiliza instâncias existentes
  • Forma recomendada na maioria dos casos

Construção explícita com new

String texto = new String("Java");
  • Cria um novo objeto no heap
  • Não reutiliza o String Pool
  • Pouco recomendada, exceto em casos específicos

Construção a partir de outro objeto String

String original = "Java";
String copia = new String(original);
  • Cria uma nova instância com o mesmo conteúdo
  • Útil quando se deseja garantir uma referência distinta

Construção a partir de array de caracteres

char[] letras = {'J', 'a', 'v', 'a'};
String texto = new String(letras);

Também é possível criar uma String a partir de um intervalo do array:

String texto = new String(letras, 1, 3); // "ava"

Construção a partir de array de bytes

byte[] bytes = {65, 66, 67};
String texto = new String(bytes);

Ou especificando o conjunto de caracteres (charset):

String texto = new String(bytes, StandardCharsets.UTF_8);

Construção a partir de StringBuilder ou StringBuffer

StringBuilder sb = new StringBuilder("Java");
String texto = new String(sb);
  • Converte objetos mutáveis em uma String imutável
  • Comum ao finalizar processos de montagem de texto

Construção a partir de objetos genéricos

Object obj = 123;
String texto = String.valueOf(obj);
  • Converte o valor do objeto para sua representação textual
  • Evita NullPointerException em comparação com obj.toString()

Considerações

A classe String oferece diversas formas de construção para atender diferentes necessidades. Sempre que possível, a criação por literais deve ser priorizada, enquanto os construtores são mais utilizados em cenários de conversão, manipulação de dados brutos ou interoperabilidade com APIs.

StringBuilder

A classe StringBuilder é utilizada para representar sequências de caracteres mutáveis, permitindo alterações no conteúdo sem a criação de novos objetos.
Ela pertence ao pacote java.lang e é indicada para cenários onde há muitas concatenações ou modificações de texto.

Características Importantes

  • Objetos StringBuilder são mutáveis
  • Melhor desempenho em concatenações repetidas
  • Não é thread-safe
  • Estruturalmente similar à classe StringBuffer

Construção e Criação

Construtor padrão

Cria um StringBuilder vazio com capacidade inicial padrão.

StringBuilder sb = new StringBuilder();

Construção com valor inicial

StringBuilder sb = new StringBuilder("Java");
  • Inicializa o objeto com o conteúdo informado
  • Permite modificações subsequentes sem criar novas instâncias

Construção com capacidade inicial

StringBuilder sb = new StringBuilder(50);
  • Define a capacidade inicial de caracteres
  • Útil para otimização de memória em textos grandes

Construção a partir de String

String texto = "Java";
StringBuilder sb = new StringBuilder(texto);
  • Muito comum ao preparar textos para concatenações dinâmicas

Conversão para String

Após finalizar as modificações, o conteúdo pode ser convertido para um objeto String.

String resultado = sb.toString();
  • O retorno é uma String imutável
  • Passo comum ao final do processamento de texto

Quando usar StringBuilder

  • Concatenações dentro de loops
  • Construção dinâmica de textos
  • Processamento de grandes volumes de caracteres
  • Cenários de execução em single-thread

StringBuilder vs StringBuffer

CaracterísticaStringBuilderStringBuffer
MutabilidadeSimSim
Thread-safeNãoSim
DesempenhoMais rápidoMais lento
SincronizaçãoNão sincronizadoSincronizado
Uso recomendadoAmbientes simplesAmbientes concorrentes

Considerações finais

  • StringBuilder deve ser a escolha padrão para manipulação de texto em aplicações comuns
  • StringBuffer é indicado apenas quando há necessidade real de acesso concorrente por múltiplas threads
  • Em aplicações modernas, o uso de StringBuffer é menos frequente devido ao custo da sincronização

Java Doc

String

Classe que representa cadeias de caracteres imutáveis.
substringequalslengthtrimtoUpperCasetoLowerCase

java.lang

StringBuilder

Classe que representa cadeias de caracteres que podem ser modificados.
appendinsertdeletereverse

java.lang