Java String: saiba como criar e usar Strings em Java

Independentemente da região em que nos encontramos ou a linguagem na qual codificamos nossas aplicações, com certeza, os caracteres são um elemento muito importante para a execução de um programa, seja ele qual for. Transmitindo mensagens em telas ou durante o desenvolvimento, entender a Classe Java String é de extrema importância para quem programa nessa linguagem, acredite.

Pode parecer muito difícil às pessoas iniciantes na área saber dar o devido tratamento aos caracteres e seus conjuntos, sem ter nenhum problema durante a manipulação desse elemento ao aplicar soluções em ambientes Java. Isso acontece, até mesmo, às mais antigas, mas que ainda engatinham na linguagem da xícara de café.

Se você estiver em um desses grupos, anime-se! Agora será o momento em que você compreenderá todos os principais aspectos que compõem a classe String, assim como exemplos práticos de como realizar a sua implementação. Além disso, você verá uma lista com todos os métodos possíveis de serem utilizados, com a uma explicação de cada um deles.

Veremos os seguintes tópicos:

Então, prepare sua IDE e vamos nessa!

O que é a classe Java String?

A classe String, em Java, é utilizada para representar Strings. Strings, por sua vez, nada mais são do que sequências de caracteres, podendo ser criadas por meio de uma string literal, que é um texto entre aspas.

Veja o exemplo, logo abaixo:

//Para declarar uma String literal é bem simples, fazemos assim, em Java:
String minhaString = "Isto é uma String literal";

Ou, de outra forma, usando o método new:

String minhaString = new String("Olá, Mundo!");

Alternativamente, strings podem ser criadas usando a classe StringBuilder ou StringBuffer.

O que é são as classes StringBuilder e StringBuffer?

As classes StringBuilder e StringBuffer são usadas para criar objetos que representam sequências modificáveis de caracteres. Essas classes foram criadas para sanar um problema de objetos string “perdidos” na memória durante algumas implementações da linguagem.

A principal diferença entre as duas é que a classe StringBuilder é uma versão não-sincronizada da classe StringBuffer, ou seja, ela não possibilita a exclusividade do acesso ao seu conteúdo pelas threads. Já a classe StringBuffer é uma versão sincronizada, então, ela garante que somente uma instância terá acesso ao objeto por vez.

De maneira geral, os métodos sincronizados garantem que o acesso ao objeto ocorra em apenas um único fluxo de controle, de maneira sequencial e isolada dentro de uma aplicação Java. Veja, na sequência, a utilização de ambas as classes String.

1. Implementando a classe StringBuffer

A seguir, você pode conferir a implantação da classe StringBuffer e verificar seu funcionamento em sua própria máquina. Você poderá perceber o uso de um método no código, tema que abordaremos na próxima parte deste nosso guia.

import java.nio.*;
import java.util.*;
 
public class Sb3 {
    
public static void main(String[] args) {
StringBuilder stb = new StringBuilder();
stb.append("beTrybe");
stb.append(4);
System.out.println(stb);

/*usando o método reverse() da classe:*/

System.out.println(stb.reverse());
    }}

A saída para o código deverá ser:

beTrybe4
4ebyrTeb

2. Implementando a classe StringBuilder

Agora, você confere uma implementação bem simples da classe StringBuilder. Lembre-se de que você poderá utilizar esse exemplo e modificá-lo durante sua leitura para melhor fixação do conteúdo.

import java.nio.*;
import java.util.*;
 
public class StBuilder{

    public static void main(String[] args) {
      StringBuilder stba= new StringBuilder("beTrybe");
      //metodo que remove pelo indice 0 - 1
      stba.delete(1, 2);
         System.out.println(stba);
      stba.append("java");
      //insere na posição 2 uma exclamação
      stba.insert(1,"X");
         System.out.println(stba);
      stba.append("strings");
      System.out.println(stba.toString());
    }}

A saída para esses comandos será essa:

bTrybe
bXTrybejava
bXTrybejavastrings

Uma vantagem que encontramos em usar a classe StringBuilder ou a StringBuffer está no controle maior dos objetos do tipo String, Dessa maneira, eles não ficarão perdidos na memória e, com isso, você terá uma aplicação mais otimizada.

O que é a classe CharBuffer?

O CharBuffer é uma classe abstrata do pacote java.nio, e é utilizada como um buffer para caracteres. Um buffer, nesse caso, pode ser definido como um espaço temporário de armazenamento, durante a transferência de dados e do processamento de sua aplicação.

O objeto CharBuffer é criado usando o método allocate(), passando a capacidade do CharBuffer para que o método possa alocar os caracteres. Confira a sintaxe e um exemplo, logo abaixo.

Sintaxe

public static CharBuffer allocate(int)

Repare que o “int” designa a quantidade limite para o buffer, e será sempre um número inteiro. Veja, no exemplo, como utilizá-lo.

Como funciona o método allocate() em Java

import java.nio.*;
import java.util.*;
 public class testebetrybe {
   public static void main(String[] args)
   {
 
       // Aqui, declaramos a capacidade de nosso buffer assim como o objeto CharBuffer:
       char capacidadeA = 10;
       CharBuffer bt = CharBuffer.allocate(capacidadeA);
 
       // Declarando o valor de cada um, usando o método put():
       bt.put('b');
       bt.put('t');
 
       // Aqui imprimimos nosso objeto, o CharBuffer:
       System.out.println("CharBuffer: "
                          + Arrays.toString(bt.array()));
   }
}

O resultado do código que trouxemos como exemplo deverá ser parecido com esse:

CharBuffer: [b, t, , , , , , , , , ]

Por que Java Strings são imutáveis?

Quando aprendemos a classe String e os dados de tipo caractere, em Java, sempre ouvimos dizer que as Strings são imutáveis, mas por que isso acontece? As Java Strings têm essa característica porque a linguagem Java foi projetada para garantir que as strings sejam manipuladas de forma segura em um ambiente multithread.

Se uma string fosse mutável durante a execução das aplicações, isso poderia causar problemas de concorrência entre as instâncias que tentam modificar a string ao mesmo tempo. Além disso, as strings, sendo imutáveis, são mais eficientes do ponto de vista do desempenho, pois não precisam ser copiadas toda vez que forem modificadas.

Quais os métodos do Java String que podem ser utilizados em aplicações? Veja a tabela completa!

Existe uma série de métodos passíveis de utilização pelas pessoas desenvolvedoras ao lidar com a classe String em ambientes Java. Para ajudar você a saber quais são, trouxemos, a seguir, uma lista com cada um desses métodos.

Você pode usar os exemplos que já mostramos e ir substituindo os métodos utilizados para praticar e fixar melhor o que você está estudando. Lembre-se de que é mais fácil aprender programação praticando!

MétodoDescriçãoTipo
charAt()Retorna à posição em que o char se encontra.char
codePointAt()Retorna o char em Unicode no índice especificado.int
codePointBefore()Retorna o char em Unicode antes do índice especificado.int
codePointCount()Retorna o número de valores em Unicode encontrados em uma String.int
compareTo()Compara duas Strings.int
compareToIgnoreCase()Compara duas Strings, ignorando diferenças entre maiúsculas e minúsculas.int
concat()Anexa uma String no fim de outra.String
contains()Verifica se uma string contém uma sequência de caracteres.boolean
contentEquals()Checa se uma String contém exatamente a mesma sequência de caracteres do CharSequence ou StringBuffer especificado no método.boolean
copyValueOf()Retorna uma String — ela representa os caracteres do array de caracteres especificado.String
endsWith()Verifica se a string termina com o caractere especificado.boolean
equals()Compra duas Strings.boolean
equalsIgnoreCase()Compra duas Strings, ignorando diferenças de maiúsculas e minúsculas.boolean
format()Retorna uma String formatada, usando uma localidade especificada no método.String
getBytes()Codifica esta String em uma sequência de bytes.byte[]
getChars()Copia caracteres de uma String pra um array.void
hashCode()Retorna o código hash para a String especificada.int
indexOf()Retorna a posição da primeira ocorrência em uma string.int
intern()Retorna a representação canônica para o objeto String especificado.String
isEmpty()Verifica se uma string está vazia ou não.boolean
lastIndexOf()Retorna a posição da última ocorrência encontrada.int
length()Retorna o comprimento de uma string.int
matches()Pesquisa uma string por uma correspondência com uma expressão regular e a retorna.boolean
offsetByCodePoints()Retorna o índice dentro da String que é deslocado do índice fornecido.int
regionMatches()Testa se duas regiões de determinada String são iguais.boolean
replace()Pesquisa uma string por um valor especificado e retorna uma nova string.String
replaceAll()Substitui cada substring da String especificada.String
replaceFirst()Substitui a primeira ocorrência de uma substring.String
split()Divide uma String em uma matriz de substrings.String[]
startsWith()Verifica se uma string começa com caracteres especificados no método.boolean
subSequence()Retorna uma nova sequência de caracteres.CharSequence
substring()Retorna uma nova string — que é a substring da string especificada no método.String
toCharArray()Converte a String especificada no método em um novo array de caracteres.char[]
toLowerCase()Converte uma String em letras minúsculas.String
toString()Retorna um valor como um objeto String.String
toUpperCase()Converte uma String em letras maiúsculas.String
trim()Remove espaços em branco das extremidades de uma String especificada no método.String
valueOf()Retorna a representação de String do valor especificado no método.String

Não é tão difícil quanto parecia, certo? Vimos, no decorrer de nosso guia, os aspectos principais que cobrem o uso da Classe String, como utilizá-la e, principalmente, como manipulá-la, usando outras classes próximas, como as classes StringBuilder e StringBuffer — ambas complementares em suas funções.

Ainda, pudemos ver as implementações com todas essas classes na prática, além de uma coleção de métodos explicados para você conferir de perto o funcionamento da classe Java String.

Gostou do conteúdo e quer saber ainda mais sobre Java? Acesse nosso guia completo sobre essa linguagem e se prepare para o mercado profissional de desenvolvimento em Java!