Bóson Treinamentos em Ciência e Tecnologia

Curso de Java – A Classe StringBuilder

Introdução à classe StringBuilder em Java

Curso de Java – A Classe StringBuilder

A classe StringBuilder em Java é 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 três construtores principais:

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);

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.

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());

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:

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());

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());

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);

Neste exemplo concatenamos strings de caracteres, conteúdo de variáveis do tipo 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 alguns métodos importantes da classe StringBuilder, como os métodos insert, delete e deleteCharAt, entre outros.

 

Sair da versão mobile