1. Estrutura da Stringaula

Hoje falaremos sobre a Stringaula. Depois de ints, a classe String é a classe mais popular em Java. É usado absolutamente em todos os lugares. Tem um monte de métodos úteis que é melhor você conhecer.

A Stringclasse é a única classe além dos tipos primitivos cujos literais podem ser usados ​​em uma switchinstrução; o compilador lida com adição de strings e objetos String de uma maneira especial; Stringos objetos são contados na memória de uma maneira especial. Basicamente, a Stringclasse é uma classe muito especial.

Além disso, a Stringclasse tem várias classes auxiliares cuja finalidade é simplificar ainda mais o trabalho com strings em Java. Quando você aprender tudo isso, muitas coisas se tornarão muito mais fáceis para você fazer. Bem, começaremos do centro desse ecossistema — a organização da Stringaula.

Matriz de caracteres

A estrutura da Stringclasse é realmente muito simples: dentro dela existe um array de caracteres (char array) que armazena todos os caracteres da string. Por exemplo, é assim que a palavra 'Olá' é armazenada:

Estrutura da classe String
Importante!

Na verdade, isso não é muito preciso. Como a Stringclasse é muito importante, ela usa muitas otimizações e os dados são armazenados internamente não como uma matriz de caracteres, mas simplesmente como uma matriz de bytes.


2. Métodos da Stringaula

A Stringclasse tem muitos métodos: só ela tem 18 construtores! Então, abaixo, mencionamos apenas o mais básico deles:

Métodos Descrição
int length()
Retorna o número de caracteres na string
boolean isEmpty()
Verifica se a string é uma string vazia
boolean isBlank()
Verifica se a string contém apenas caracteres de espaço em branco: espaço, tabulação, nova linha, etc.
char charAt(int index)
Retorna o caractere na posição do índice na string.
char[] toCharArray()
Retorna um array dos caracteres (uma cópia) que compõem a string
byte[] getBytes()
Converte uma string em um conjunto de bytes e retorna a matriz de bytes.
String[] split(String regex)
Divide uma string em várias substrings.
String join(CharSequence delimiter, elements)
Une várias substrings juntas
String intern()
Coloca uma string no arquivo string pool.

Você pode aprender mais sobre construtores no artigo Construtores Java .

Vamos escrever um programa que converta um caminho de arquivo do estilo Unix para o estilo Windows. O Unix usa o /caractere para separar pastas, enquanto o Windows usa o \caractere.

Solução 1: usando uma matriz de caracteres

Código Notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Criar um objeto Scanner
Ler uma linha do console

Converter uma string em uma matriz de caracteres
Percorrer os caracteres
Se o caractere for /,
substitua-o por \. Não se esqueça de escapar.

Crie uma nova string com base na matriz de caracteres.
Exiba a sequência.

Solução 2: — usando os métodos split()ejoin()

Código Notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
Criar um objeto Scanner
Ler uma linha do console

Converter string em um array de strings . O /caractere é usado como separador (as duas barras extras são o resultado de escape duplo).
Concatene todas as strings na matriz de strings . O \é usado como um separador (vemos que escapou).

Exiba a sequência.

Solução 3: — usando o replace(char oldChar, char newChar)método

Código Notas
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Crie um objeto Scanner
Leia uma linha do console

Simplesmente substitua um caractere por outro
(o segundo é escapado)
Exiba a string.