Programação em Java – A Classe String – Introdução

Introdução à Classe String em Java

Usamos a classe String para representação de strings (cadeias de caracteres) em Java. Esta classe possui construtores que permitem inicializar objetos do tipo String de várias formas. O exemplo a seguir ilustra quatro delas:

char[] arrayCarac = {'B', 'o', 's', 'o', 'n', ' ', 'T', 'r', 'e', 'i', 'n', 'a', 'm', 'e', 'n', 't', 'o', 's'};
String txt = new String("Fábio dos Reis");

// Quatro formas de Construtores da classe String
String tex1 = new String();
String tex2 = new String(txt);
String tex3 = new String(arrayCarac);
String tex4 = new String(arrayCarac, 6, 5);

System.out.printf("tex1 = %s%ntex2 = %s%ntex3 = %s%ntex4 = %s%n", tex1, tex2, tex3, tex4);

Exemplo da classe String em Java

  • No primeiro exemplo chamamos o construtor sem passar nenhum argumento. 
  • No segundo exemplo, o construtor recebe um argumento, no caso uma string.
  • O terceiro exemplo mostra o construtor recebendo um array de caracteres.
  • O quarto exemplo mostra o construtor recebendo 5 caracteres a partir da posição 6 de um array de caracteres passado como primeiro argumento.

Métodos length, charAt e getChars

Esses métodos nos permitem obter o tamanho de uma string (seu comprimento), o caractere armazenado em uma posição específica ou ainda retornar um conjunto de caracteres de um objeto String na forma de um array de caracteres.

  • Método length – Retorna o número de caracteres presentes em uma String.
  • Método charAt – Retorna o caractere presente em uma posição específica da string. Este método recebe um número inteiro como argumento, e retorna o caractere que esteja armazenado na posição de índice equivalente a esse número. Lembre-se que contamos os elementos em uma String a partir da posição 0.
  • método getChars – O método getChars recebe quatro argumentos: o primeiro é o valor de índice inicial a partir do qual caracteres serão copiados. O segundo é o valor de índice final + 1, indicando o último caractere a ser copiado. O array que receberá os caracteres é o terceiro argumento. Finalmente, o último argumento é o valor de índice (posição) no array a partir de onde os caracteres serão armazenados.

Vejamos exemplos da aplicação desses métodos em Java.

String string1 = "Bóson Treinamentos";
char[] arrayCar = new char[5];
System.out.printf("string1: %s", string1);

// Comprimento da string:
System.out.printf("%nComprimento da string1: %d caracteres", string1.length());

//Mostrar os caracteres da string1 em reverso com charAt
System.out.printf("%nString1 de trás pra frente: ");
for (int cont = string1.length() - 1; cont >= 0; cont--) {
  System.out.printf("%c ",string1.charAt(cont)); }

// Criar um array de caracteres a partir da String:
string1.getChars(0, 5, arrayCar, 0);
System.out.printf("%nO array de caracteres criado é: ");
for (char caractere : arrayCar) {
  System.out.print(caractere); }

Métodos da classe String em Java

Comparação de Strings em Java

É muito comum a necessidade de ter de comparar strings em uma aplicação. A classe String fornece métodos que permitem realizar comparações de diversas formas. A seguir, alguns dos métodos mais comuns de comparação de strings em Java:

  • Método equals – O método equals verifica se dois objetos são iguais – mais precisamente, se eles são idênticos, retornando true caso sejam, e falso caso não sejam. A comparação é feita usando os valores inteiros Unicode de cada caractere dentro da String, o que chamamos de comparação lexicográfica. Note que isto significa que ele diferencia maiúsculas de minúsculas.
  • Método equalsIgnoreCase – O método equals faz distinção de caso. Porém, se for necessário ignorar a diferença entre maiúsculas e minúsculas em uma comparação de Strings, devemos usar o método equalsIgnoreCase.
  • Método compareTo – O método compareTo retorna um valor numérico dependendo do resultado da comparação. O valor 0 é retornado se as Strings forem iguais. Um número negativo é retornado se a String passada como argumento for maior que a String que invoca o método, e um número positivo é retornado se a string passada como argumento for menor que a String que o invoca. Este método também emprega comparação lexicográfica.
  • Método regionMatches – Este método permite comparar partes de duas Strings. Ele emprega quatro ou cinco argumentos, como segue:
    • O primeiro argumento é o índice inicial na String que chama o método.
    • O segundo argumento é a String que será comparada.
    • O terceiro argumento é é o índice inicial na String que será comparada.
    • O quarto argumento é o número de caracteres que serão comparados.
    • Opcionalmente, podemos adicionar um outro argumento inicial para forçar o método a ignorar o caso. Para isso, o argumento inicial deve ser o valor true.
  • Método startsWith – Verifica se uma String inicia com uma sequência definida de caracteres. Passamos a sequência de caracteres a comparar como argumento. Podemos passar opcionalmente um segundo argumento numérico indicando em qual posição deve se iniciar a comparação dos caracteres.
  • Método endsWith – Verifica se uma String termina com uma sequência definida de caracteres. Também passamos a sequência de caracteres a comparar como argumento para o método.

Vejamos alguns exemplos de comparação de string usando esses métodos.

String tex1 = new String("Bóson"); // O objeto tex1 é uma cópia dos caracteres "Bóson"
String tex2 = "Méson";
String tex3 = "NÍVEL QUÂNTICO";
String tex4 = "Nível Quântico";
System.out.printf("tex1 = %s%ntex2 = %s%ntex3 = %s%ntex4 = %s%n%n", tex1, tex2, tex3, tex4);

// Testar igualdade de strings
if (tex1.equals("Bóson"))
  System.out.println("tex1 é igual à \"Bóson\"");
else
  System.out.println("tex1 não é igual à \"Bóson\"");

// Testar igualdade de strings, ignorando maiúsculas e minúsculas
if (tex3.equalsIgnoreCase(tex4))
  System.out.printf("%s é igual à %s se ignorarmos o caso%n", tex3, tex4);
else
  System.out.println("tex3 não é igual a tex4");

// Testar usando método compareTo
System.out.printf("%ntex1.compareTo(tex1) é %d", tex1.compareTo(tex1));
System.out.printf("%ntex1.compareTo(tex2) é %d", tex1.compareTo(tex2));
System.out.printf("%ntex2.compareTo(tex1) é %d", tex2.compareTo(tex1));
System.out.printf("%ntex3.compareTo(tex4) é %d", tex3.compareTo(tex4));
System.out.printf("%ntex4.compareTo(tex3) é %d%n%n", tex4.compareTo(tex3));

// Teste com método regionMatches (exemplo case sensitive)
if (tex3.regionMatches(0, tex4, 0, 5))
  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 correspondem");
else
  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 não correspondem");

// Teste com método regionMatches (exemplo ignorando caso)
if (tex3.regionMatches(true, 0, tex4, 0, 5))
  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 correspondem, ignorando o caso");
else
  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 não correspondem");

// Testar igualdade com o operador ==
if ( ) // retorna falso, pois não são o mesmo objeto
  System.out.println("tex1 é igual a \"Bóson\"");
else
  System.out.println("tex1 não é igual a \"Bóson\"");

Comparar strings em Java

Perceba que não é correto usar o operador de comparação == para comparar dois objetos String.

Vejamos agora exemplos dos métodos startsWith e endsWith em Strings.

String meuTexto = new String("Bóson Treinamentos");
// Testar se a String inicia com Bó
if (meuTexto.startsWith("Bó")) {
  System.out.println("A String inicia com Bó");
}

// Testar se a String inicia com Bo (sem acento):
if (meuTexto.startsWith("Bo")) {
  System.out.println("A String inicia com Bo");
}
else {
  System.out.println("A String não inicia com Bo");
}

// Testar se a String possui as letras son (a partir do 3º caractere):
if (meuTexto.startsWith("son", 2)) {
  System.out.println("Sequência \"son\" está na posição indicada");
}
else {
  System.out.println("Sequência \"son\" não está na posição indicada");
}

// Testar se a String termina com a letra o:
if (meuTexto.endsWith("o")) {
  System.out.println("A String termina com a letra o");
}
else {
  System.out.println("A String não termina com a letra o");
}

Métodos startsWith e endsWith em Java - Manipulação de Strings

Na próxima lição vamos mostrar mais métodos que podem ser aplicados na manipulação de Strings em Java.

 

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


*