Classe String - professores.info

Propaganda
LP_Aula04
String
1. Objetivos
Demonstrar a utilização e manipulação com os métodos da classe String.
2. Strings
2.1. O que são Strings?
Em Java, String é uma seqüência de caracteres utilizada para representação
e manipulação de texto. Quando é necessário representar informações textuais em
uma aplicação, seja ela para Desktop ou Web, como nome de pessoas, informações
sobre endereço ou comentários em uma matéria no jornal, instâncias da classe
String serão criadas invariavelmente. Isto é, sempre que precisarmos mostrar
alguma informação em um sistema, dificilmente vamos conseguir isso sem o auxílio
de Strings.
Em uma visão mais técnica, String é uma classe presente no Java desde a
versão 1.0 do JDK que implementa a interface CharSequence (além de Serializable
e Comparable, mas essas duas não são interessantes para esta aula). Assim,
podemos dizer que Strings nada mais são do que uma cadeia ordenada de
caracteres.
2.2. Como utilizar Strings em Java
A classe String permite a criação de suas instâncias de diversas maneiras.
Ela possui vários construtores que recebem diversos tipos de parâmetros. Pelo fato
de ser uma classe amplamente utilizada, ela também fornece um “atalho” para a
criação de forma mais rápida de seus objetos, como pode ser observado no código
abaixo.
1 package principal;
2
3 public class ClassePrincipal {
4
5
public static void main(String[] args) {
6
String minhaString1 = new String();
7
minhaString1 = "Java";
8
String minhaString2 = "Java";
9
String minhaString3 = new String("Java");
10
String minhaString4 = "";
11
12
char[] meusChars = new char[] {J,a,v,a};
13
String minhaString5 = new String(meusChars);
14
}
15 }
Vamos à explicação dos pontos pertinentes:
- Linha 6: A classe String, assim como qualquer classe em Java, pode ser
instanciada com a utilização da palavra chave new. Neste caso, está sendo criado
um objeto String vazio que é atribuído à variável de referência minhaString1;
Linguagem de Programação
Página 1
LP_Aula04
- Linha 7: A variável minhaString1 recebe o valor “Java”. Como a variável já foi
declarada na linha anterior, neste momento acontece apenas a atribuição do
conteúdo à variável;
- Linha 8: Representa a maneira mais rápida e fácil de criar um novo objeto desta
classe e atribuí-lo a uma variável (no caso, minhaString2);
- Linha 9: Há diversos construtores na classe String. Esta linha demonstra a
utilização de um deles: passar um objeto String no construtor de modo a criar um
novo objeto String.
Com relação à criação de objetos na memória, há uma diferença considerável no
modo como as linhas 8 e 9 o fazem. Essa diferença será explicada mais adiante, na
seção “Como são criados objetos da classe String”;
- Linha 10: Aqui uma String vazia é criada utilizando-se o mesmo mecanismo de
“atalho” que foi demonstrado na linha 8, só que o conteúdo para o qual aponta a
variável minhaString4 é uma String vazia.
Pode-se dizer que, com relação ao conteúdo, as linhas 6 e 10 fazem a mesma
coisa: criam uma String vazia;
- Linhas 12 e 13: Como já foi comentado neste artigo, a classe String possui
diversos construtores. Não cabe aqui tentarmos demonstrar a utilização de cada um
deles.
Estas duas linhas demonstram mais um exemplo de como podemos criar objetos
String a partir de outros objetos passados como parâmetro no construtor.
A variável minhaString5 tem o mesmo conteúdo das variáveis minhaString1,
minhaString2 e minhaString3, porém foi inicializada de uma maneira diferente das
demais, recebendo um array de char.
Estes são alguns modos de se declarar e atribuir valor às variáveis do tipo String.
Agora veremos alguns dos métodos utilizados para se manipular o conteúdo destas
variáveis.
3. Métodos úteis da classe String
Para se trabalhar com texto, a classe String oferece diversos métodos
utilitários. Por questões de espaço, não serão descritos todos aqui.
Vamos apenas comentar aqueles que são mais utilizados no dia-a-dia do
programador.
Logicamente, dependendo do sistema que esteja sendo desenvolvido, alguns
métodos serão mais utilizados que outros, mas independente do que seja
necessário, a classe String oferece o suporte necessário para operações envolvendo
texto: quebrá-lo em várias partes, fazer busca de determinado conteúdo, converter
a String em bytes, verificar se o texto começa ou termina com um dado conjunto
de caracteres, comparar se uma String é igual à outra (o método equals() é
definido na classe Object), dentre outros.
Linguagem de Programação
Página 2
LP_Aula04
3.1.
public
replacement)
String
replace(CharSequence
target,
CharSequence
O método replace() faz a substituição de um determinado conjunto de
caracteres por outro, retornando uma nova String. Um exemplo de sua utilização
pode ser visto em fóruns de discussão, onde os administradores criam uma lista de
palavras de baixo calão que não podem ser publicadas.
Caso alguém escreva tais palavras, elas serão automaticamente substituídas
por outras, após uma busca adequada (que pode ser feita utilizando o método
contains(), explicado mais adiante). Vejamos o código abaixo:
1
2
3
String s = "Este comentário foi péssimo!";
s = s.replace("péssimo","ruim");
System.out.println(s);
A saída na linha 3 será “Este comentário foi ruim!”. O método replace() é
Case Sensitive, ou seja, faz diferenciação entre maiúsculas e minúsculas. Portanto,
se na linha 2 estivesse escrito s = s.replace(“Péssimo”,“ruim”) nada seria alterado
e a frase inicial seria impressa na saída padrão. Também é válido lembrar que o
método replace() busca todas as ocorrências do primeiro parâmetro e realiza a
substituição pelo segundo.
Perceba o que acontece com a busca na próxima sentença:
1
String s = "Gosto de comer frango com batata. Não gosto de
batata frita.";
2
s = s.replace("batata","polenta");
3
System.out.println(s);
Aqui a impressão será “Gosto de comer frango com polenta. Não gosto de
comer polenta frita.”
Por fim, o método replace() é sobrecarregado e pode receber apenas um
caractere (do tipo primitivo char) como parâmetro para que seja feita a
substituição. Exemplo:
1 String s = "arara";
2 s = s.replace(‘a´,´e´); // recebendo um char como parâmetro
3 System.out.println(s);
A saída na linha 3 será “erere”.
3.2. public String trim()
O método trim() retorna uma String sem os espaços em branco no começo e
no final da mesma. É útil quando se trabalha com preenchimento de formulários.
Antes de salvar no banco de dados as informações preenchidas pelo usuário na
tela, pode-se chamar o método trim() em todos os campos texto preenchidos pelo
operador, de modo a evitar que espaços em branco desnecessários sejam
gravados, economizando espaço no banco de dados.
O código abaixo exemplifica a utilização do método trim():
Linguagem de Programação
Página 3
LP_Aula04
1
2
String s = " Java Magazine ";
s = s.trim();
Após a execução do comando na linha 2, a variável de referência s apontará
para a nova String criada sem os espaços que existiam na linha 1 (“Java
Magazine”). Todavia, como pode ser observado, o espaço em branco do meio da
palavra não foi removido.
3.3. public boolean contains(CharSequence s)
O método contains() não tem como retorno uma nova String, mas sim um
boolean. Ele avalia se a String original contém a String passada como parâmetro
para o método. Este método pode ser utilizado para verificar, por exemplo, se
determinado nome está na lista de aprovados de um concurso público ou
vestibular.
Ou ainda, se um dado específico foi recebido em uma mensagem enviada
por outro sistema para realizar validação. As linhas abaixo demonstram uma
utilização do método contains():
1
2
String s = "001MARCOS PAULO
M19803112";
System.out.println(s.contains("MARCOS"));
Um detalhe interessante é que o método contains() também é Case
Sensitive. No caso do código acima, o resultado será true, porém, se a String
passada como parâmetro estivesse escrita “Marcos”, o resultado seria false.
3.4. public int length()
O método lengh() retorna um int indicando o tamanho da String, ou seja, a
quantidade de caracteres que há na String atual. É comum ser utilizado em loops
for e blocos de condição if. O trecho a seguir demonstra a aplicação deste método:
1 System.out.println(" Java ".length());
A linha 1 imprimirá “6”, que é a quantidade de caracteres contida na String
“Java” (aqui o método foi invocado diretamente na instância da classe, sem a
utilização de uma variável de referência).
Perceba que os espaços em branco também são considerados como
caracteres. Se fizéssemos uma chamada ao método trim() encadeado com length(),
da forma “Java”.trim().length(), a linha 1 exibiria o valor “4” na saída padrão.
3.5. public String toUpperCase()
O método toUpperCase() retorna uma nova String com o mesmo conteúdo
da original, só que com todos os caracteres em letras maiúsculas. Assim como o
método trim(), toUpperCase() também pode ser utilizado antes de salvar dados de
um formulário na base de dados. Como as pessoas não possuem o mesmo padrão
de digitação (algumas digitam todo o texto em minúsculo, Outras Começam Todas
As Palavras De Uma Frase Com Letras Maiúsculas, E HÁ TAMBÉM AQUELAS QUE
ESQUECEM O CAPS LOCK LIGADO), o método toUpperCase() pode ser a solução
Linguagem de Programação
Página 4
LP_Aula04
para este problema, salvando todos os dados do cliente em letra maiúscula. Veja
um exemplo abaixo:
1
2
3
4
5
6
String s1 = "rodolfo rodrigues";
String s2 = "Alfredo Augusto";
String s3 = "JONNY DEBRUCE";
System.out.println(s1.toUpperCase());
System.out.println(s2.toUpperCase());
System.out.println(s3.toUpperCase());
A saída será, respectivamente:
RODOLFO RODRIGUES
ALFREDO AUGUSTO
JONNY DEBRUCE
Existe ainda o método toLowerCase(), o “irmão menor” do método
toUpperCase(), porém menos utilizado. Ele também retorna uma nova String com o
mesmo conteúdo da original, mas com todos os caracteres em letras minúsculas.
Se na linha 6 estivesse escrito System.out.println(s3.toLowerCase()) a saída seria
“jonny debruce”.
3.5. public String substring(int beginIndex)
O método substring() retorna uma parte do texto original a partir do índice
especificado. Ele recebe como parâmetro um int que indica o ponto de partida
(iniciado em zero) pelo qual se deve iniciar a pesquisa. A partir deste índice o
método copia tudo que estiver até o final da palavra. Há outra implementação
deste método que recebe um índice para indicar o término da pesquisa, mas ele
não será abordado aqui. O método substring() pode ser útil para fazer buscas em
Strings e capturar determinadas informações, por exemplo:
1
2
String s = "Universidade";
System.out.println(s.substring(7));
Como o índice da String inicia em zero, a saída do comando será “idade”.
Note que o caractere que estiver ocupando a posição do índice inicial de pesquisa
também será incluído na String de resultado. A Tabela 1 demonstra o
funcionamento do método para a palavra “Universidade”.
Tabela 1 - Caracteres da String “Universidade” copiados pelo método substring().
Os métodos apresentados aqui são apenas alguns dos muitos presentes na classe
String. Porém, sabendo-se trabalhar com os que já foram citados é possível realizar
muitas tarefas do cotidiano da programação em Java.
A Tabela 2 apresenta uma descrição sucinta de outros métodos úteis presentes na
classe String.
Linguagem de Programação
Página 5
LP_Aula04
Tabela 2 - Outros métodos úteis presentes na classe String
Até o momento vimos o que fazer para criar Strings e também como
manipular seu conteúdo, agora vamos analisar uma das particularidades das
Strings: a imutabilidade.
Linguagem de Programação
Página 6
Download