Article image
Gabriel Cordeiro
Gabriel Cordeiro23/02/2023 20:00
Compartilhe

A Classe String no Java

  • #Java

E aí, pessoal! Durante o bootcamp de Java do Banco PAN, o professor Gleyson nos incentiva a estudar a classe String por conta própria, então decidi compartilhar minhas anotações por aqui.

Criação de uma instância

String meuNome = "Gabriel";

Não é recomendável usar a atribuição new String("Gabriel"), pois o JVM já procura se existe uma string com este valor. Então usar o new possibilitaria a criação do mesmo texto em diferentes partes da memória.

Pode parecer não mudar muita coisa, mas dentro de um loop com diversas repetições, o new criaria o mesmo objeto diversas vezes.

Declarar uma string sem inicializá-la, cria um objeto de valor null. Ela precisa ser iniciada para ser utilizada, caso contrário ocorrerá um erro de compilação.

Concatenando Strings

A classe string possui dois métodos para concatenação. Sendo estes:

String string = "Olá";
string.concat(", Mundo");
string += "!";

Esses métodos são bons para deixar o código legível, mas eles têm um problema: a classe string é imutável, ou seja, a string não muda com as concatenações. Ao invés disso, um novo objeto é criado para cada mudança no texto.

Para resolver isso, existem as classes StringBuffer e StringBuilder

StringBuffer stringBuffer = "Olá";
stringBuffer.append(", Mundo!");

StringBuilder stringBuilder = "Olá";
stringBuilder.append(", Mundo!");

A StringBuffer é sincronizada, então é ideal quando a mesma string for usada em várias partes do código ao mesmo tempo. Caso contrário, a StringBuilder é recomendada, pois é levemente mais rápida.

A concatenação com a classe String ainda pode ser útil, caso deixe o código mais legível.

Como comparar Strings

Método equals

Este método verifica se as duas strings têm os mesmos caracteres e retorna um valor booleano.

String nome1 = "Gabriel";
String nome2 = "Gleyson";
String nome3 = "Gabriel";

nome1.equals(nome2); //aqui o valor será false
nome1.equals(nome3); //aqui o valor será true

Método compareTo

O método compareTo compara os valores Unicode de cada caractere nas strings.

Caso elas tenham o mesmo valor, o método retorna 0 (zero).

Caso a primeira string tenha um valor maior, o método retorna um número positivo.

Caso a segunda string tenha um valor maior, o método retorna um número negativo.

String nome1 = "Gabriel";
String nome2 = "Gabriel";
String nome3 = "Gabriela";

nome1.compareTo(nome2) //aqui o valor será 0

nome1.compareTo(nome3) //aqui o valor será negativo

nome3.compareTo(nome1) //aqui o valor será positivo

Métodos equalsIgnoreCase e compareToIgnoreCase

Estes são iguais aos anteriores, mas ignoram a diferença de maiúsculas e minúsculas.

Alguns outros métodos importantes

double numero = 42.42;
String.valueOf(numero);
/* retorna valor como um objeto String
(no exemplo, "42.42") */

String nome = "Gabriel";
nome.length;
/* retorna comprimento da String
(no exemplo, retorna o número 7) */

String nome = "Gabriel";
nome.startsWith("G");
/* verifica se string começa com letra(s) especificada(s)
e retorna valor booleano (no exemplo, true) */

String nome = "Gabriel";
nome.endsWith("A")
/* verifica se string começa com letra(s) especificada(s)
e retorna valor booleano (no exemplo, false) */

String letras = "abcdefghijklmnopqrstuvwxyz";
letras.indexOf("j", 2)
/* retorna posição da primeira aparição de um caractere
valor inteiro informa posição para começar a busca e é opcional
caso o método não encontre o caractere, ele retorna o valor -1
(no exemplo, retorna o número 9) */

String letras = "abcdefghijklmnopqrstuvwxyz";
letras.lastIndexOf("q", 2)
/* retorna posição da última aparição de um caractere
valor inteiro informa última posição da busca e é opcional
caso o método não encontre o caractere, ele retorna o valor -1
(no exemplo, retorna o número -1) */

String nome = "Gabriel";
nome.replace("el", "ela")
/* substitui trecho da string por outra expressão
(no exemplo, "Gabriela") */

String nome = "Gabriel":
nome.toUpperCase()
/* retorna todos os caracteres em letra maiúscula
(no exemplo, "GABRIEL")*/

String nome = "Gabriel";
nome.toLowerCase()
/* retorna todos os caracteres em letra minúscula
(no exemplo, "gabriel") */

Essa foi minha pesquisa, espero ter ajudado alguém! :)

Links de referência

1 https://www.devmedia.com.br/string-em-java-entendendo-e-utilizando-essa-classe/25503

2 https://www.devmedia.com.br/diferencas-entre-string-stringbuilder-e-stringbuffer-em-java/29865

3 https://blog.betrybe.com/java/java-string/

4 https://www.digitalocean.com/community/tutorials/string-vs-stringbuffer-vs-stringbuilder

5 https://www.w3schools.com/java/ref_string_compareto.asp

6 https://www.guj.com.br/t/usando-compareto/132830/2

Compartilhe
Comentários (4)

GS

Gustavo Silva - 15/03/2023 22:52

Excelente artigo, vou me aprofundar com os links que você recomendou

Douglas Menezes
Douglas Menezes - 23/02/2023 22:17

muito explicativo! parabéns

CS

Cristiane Sousa - 23/02/2023 21:21

Excelente explicação

MJ

Marcos Justino - 23/02/2023 20:53

Muito bom, excelente sua explicação !