Curso de Java – A Classe StringBuilder

Curso de Java – A Classe StringBuilder

A classe StringBuilder é empregada na criação e manipulação de informações do tipo string dinâmicas, ou seja, strings que são modificáveis. Seu uso é altamente recomendado em programas onde as strings são frequentemente concatenadas ou sofrem algum outro tipo de manipulação.

Esta classe possui quatro construtores.

  • É possível criar um objeto StringBuilder sem passar nenhum argumento ao construtor, criando assim um objeto com capacidade padrão inicial de 16 caracteres. A capacidade aumenta de acordo com a informação que é armazenada no objeto.
  • Outra possibilidade é passar um número inteiro ao método construtor, especificando a capacidade (número de catracteres) que o objeto terá inicialmente.
  • Muito comum também é passar como argumento uma string de caracteres, que criará um objeto contendo esses caracteres. Neste caso, a capacidade inicial será o número de caracteres passados mais 16.

Para exibir o valor armazenado em uma StringBuilder, podemos usar o método toString, por exemplo com as funções printf ou println.

Vejamos exemplos da criação de objetos com StringBuilder.

StringBuilder string1 = new StringBuilder();
StringBuilder string2 = new StringBuilder(49);
StringBuilder string3 = new StringBuilder("Bóson Treinamentos");
System.out.printf("string1 = \"%s\"%n", string1);
System.out.printf("string2 = \"%s\"%n", string2);
System.out.printf("string3 = \"%s\"%n", string3);

Classe StringBuilder em Java 01

Alguns métodos comuns da classe StringBuilder

Vamos estudar agora alguns métodos bastante comuns, que incluem os métodos length, capacity, ensureCapacity e setLength.

  • Método length: Retorna o número de caracteres armazenados no momento no objeto
  • Método capacity: Mostrea o número de caracteres que podem ser armazenados no objeto sem a necessidade de alocar mais memória.
  • Método ensureCapacity: Garante que o objeto tenha, no mínimo, a capacidade especificada.
  • Método setLength: Aumenta ou diminui o comprimento de um objeto.

Vejamos exemplos de uso desses métodos.

StringBuilder string1 = new StringBuilder("Bóson Treinamentos");
System.out.printf("string1 = %s%nComprimento = %d%nCapacidade = %d%n%n",
string1.toString(), string1.length(), string1.capacity());
string1.ensureCapacity(50);
System.out.printf("Nova capacidade é = %d%n%n", string1.capacity());
string1.setLength(15);
System.out.printf("O novo comprimento é = %d%nstring1 = %s%n", string1.length(), string1.toString());

classe stringbuilder em java 02

Como manipular caracteres em um objeto StringBuilder

Vários métodos são fornecidos para a manipulação de caracteres nos objetos da classe. Entre eles, destacamos os seguintes:

  • Método charAt – Recebe um inteiro como argumento e retorna o caractere armazenado no objeto, na posição desse número de índice.
  • Método setCharAt – Recebe dois argumentos: um inteiro e um caractere, gravando o caractere passado na posição especificada pelo valor inteiro.
  • Método getChars – Copia caracteres de uma StringBuilder para um array de caracteres que é passado como argumento ao método. O método usa quatro argumentos: valor de índice inicial a partir do qual os caracteres serão copiados, índice final do último caractere a ser copiado + 1, o array de caracteres que recerberá os caracteres copiados, e o índice (local) do array onde se iniciará a cópia dos caracteres.
  • Método reverse – Este método inverte o conteúdo do objeto – ou seja, reverte a string armazenada.

Vejamos exemplos desses métodos.

StringBuilder string1 = new StringBuilder("bóson treinamentos");
System.out.printf("string1 = %s%n", string1.toString());
System.out.printf("Caractere na posição 0: %s%nCaractere na posição 7: %s%n%n",string1.charAt(0), string1.charAt(7));
char[] arrayCaracteres = new char[string1.length()];
string1.getChars(0, string1.length(), arrayCaracteres, 0);
System.out.print("Os caracteres armazenados são: ");
for (char c : arrayCaracteres)
  System.out.print(c);
string1.setCharAt(0, 'B');
string1.setCharAt(6, 'T');
System.out.printf("%n%nstring1 = %s", string1.toString());
string1.reverse();
System.out.printf("%n%nstring1 = %s%n", string1.toString());

Métodos da classe StringBuilder em Java

Como acrescentar valores em um objeto StringBuilder

Usamos o método sobrecarregado append para adicionar valores de vários tipos ao objeto criado. É possível anexar valores de vários tipos, como tipos primitivos, arrays de caracteres, objetos, Strings, e outros. Como exemplo, vamos acrescentar diversos dados, de vários tipos, a um objeto criado:

String palavra = "Bóson";
char[] arrayCaract = {'F', 'A', 'B', 'I', 'O'};
boolean valorBool = true;
char caractere = 'T';
int valorInteiro = 33;
float valorFloat = 21.5f;
double valorDouble = 100.1953;
StringBuilder outraString = new StringBuilder("Fábio dos Reis");
StringBuilder string1 = new StringBuilder();
string1.append(palavra)
  .append("\n")
  .append(arrayCaract)
  .append("\n")
  .append(arrayCaract, 0, 3)
  .append("\n")
  .append(valorBool)
  .append("\n")
  .append(caractere)
  .append("\n")
  .append(valorInteiro)
  .append("\n")
  .append(valorFloat)
  .append("\n")
  .append(valorDouble)
  .append("\n")
  .append(outraString);
System.out.printf("Conteúdo do objeto StringBuilder: %n%s%n", string1.toString());

Método append da classe StringBuilder em Java

Concatenação de strings com StringBuilder

Podemos concatenar strings facilmente usando o método append. Veja o exemplo a seguir:

String texto1 = "Bóson";
String texto2 = "Treinamentos";
int idade = 6;
String resultado = new StringBuilder().append(texto1).append(" ").append(texto2).append(" ").append(idade).append(" ").append("anos!").toString();
System.out.printf("%s",resultado);

Concatenação de strings com classe StringBuilder em Java

Neste exemplo concatenamos strings de caracteres, conteúdo de variáveis String e números inteiros em um objeto de nome resultado.

Obs.: Objetos StringBuilder não não são seguros em threads múltiplas. Se várias threads precisarem acessar a mesma informação de string dinâmica, é recomendável usar a classe StringBuffer, a qual oferece funcionalidade idêntica à classe StringBuilder, mas com segurança em threads.

Na segunda parte deste tutorial vamos estudar mais métodos da classe StringBuilder, como os métodos insert, delete e deleteCharAt, entre outros.

 

Sobre Fábio dos Reis (1379 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*