Você está na página 1de 28

Programação Orientada a

Objetos
Professor Vinícius Bortolini
Mapa Conceitual da Aula

Fundamentos da Linguagem | 2
Objetivos

Ao final desta aula, o aluno será capaz de:

- Entender o funcionamento dos objetos String;

- Usar os métodos de manipulação dos objetos da


classe String.

Fundamentos da Linguagem | 3
String

No Java o tipo String não é um tipo primitivo


- É um tipo construído, ou seja, uma classe que encapsula o texto
(sequência de caracteres) e os métodos para manipulá-lo.

A classe String faz parte do pacote java.lang e não precisa ser importada
explicitamente.

A classe String integra a API básica do Java, e por ser uma classe de uso
fundamental na criação de programas possui alguns privilégios
típicos dos tipos primitivos (por exemplo, o operador de
concatenação de String), que nenhuma outra classe tem.

Fundamentos da Linguagem | 4
String

É possível criar objetos da classe String atribuindo


diretamente uma constante String a uma variável de
referência do tipo String...

Exemplo:
String nome = "Java";

… ou chamando o construtor da classe String passando a


constante String como parâmetro.

Exemplo:
String nome = new String( "Java" );

Fundamentos da Linguagem | 5
Tamanho de uma String

Pode-se saber quantos caracteres estão armazenados num


objeto do tipo String acessando o método length()

Exemplo:
String texto = "teste";
System.out.println( texto.length() ); //imprime o valor 5

Fundamentos da Linguagem | 6
Malhação Cerebral

MC6_01. Faça uma aplicação Java que receba uma palavra do usuário e
apresente esta palavra e o total de caracteres contidos nela.

MC6_02. Faça uma aplicação Java que receba do usuário uma frase.
Identifique o tamanho da frase e imprima esta frase tantas vezes quanto
for a quantidade de caracteres.
Ex: para a frase: “zé do povo”, ela deverá aparecer 10 vezes na tela, pois
tem 10 caracteres (incluindo espaços).

Fundamentos da Linguagem | 7
Comparando valores de objetos String

Não é aconselhável comparar dois objetos String através do operador


de igualdade (==)
- as mesmas só terão o mesmo valor caso ambas tenham sido
inicializadas com uma constante String idêntica.

O uso do operador == em objetos String pode gerar erros de lógica de


programação.

Fundamentos da Linguagem | 8
String - Exemplo 3

public class ExemploString3 {


public static void main( String[] args ) {
Scanner sc = new Scanner(System.in);
String nome1 = sc.nextLine();
String nome2 = sc.nextLine();
if( nome1 == nome2 )
System.out.println( "Os objetos referenciados por nome1 [" + nome1 +
"] e por nome2 [" + nome2 + " ] é o mesmo!" );
else
System.out.println( "Os objetos referenciados por nome1 [" + nome1 +
"] e por nome2 [" + nome2 + "] são diferentes!" );
}
}

Fundamentos da Linguagem | 9
Comparando valores de objetos String

boolean ■ equals( String s1 ): retorna true se o valor da String s1 for igual


ao valor do objeto que chamou o método.
● Diferencia maiúsculas de minúsculas.

boolean ■ equalsIgnoreCase( String s1 ): retorna true se o valor da String


s1 for igual ao valor do objeto que chamou o método.
● Não diferencia maiúsculas de minúsculas.

int ■ compareTo( String s1 ): compara o valor da String s1 com o


valor do objeto que chamou o método lexicograficamente, ou
seja, avaliando a soma dos números que representam os
caracteres.
● Se forem iguais retorna zero
● Senão, retorna um valor – ou +

Fundamentos da Linguagem | 10
String - Exemplo 4
public class ExemploString4 {
public static void main( String[] args ) {
String nome1 = args[0]; String nome2 = args[1]; String resposta = "";
if ( nome1.equals(nome2) )
resposta += nome1 + " é igual a " + nome2 + " - método equals()\n";
else
resposta += nome1 + " é diferente de " + nome2 + " - método equals()\n";
if ( nome1.equalsIgnoreCase(nome2) )
resposta += nome1 + " é igual a " + nome2 + " - método equalsIgnoreCase()\n";
else
resposta += nome1 + " é diferente de " + nome2 + " - método equalsIgnoreCase()\n";
if ( nome1.compareTo(nome2) == 0 )
resposta += nome1 + " é igual a " + nome2 + " - método compareTo\n";
else
resposta += nome1 + " é diferente de " + nome2 + " - método compareTo\n";
System.out.println( resposta );
System.exit(0);
}
}

Fundamentos da Linguagem | 11
String - Exemplo 4 (continuação)

Fundamentos da Linguagem | 12
Localizando informações no objeto String

int ■ indexOf( char carac ): procura a primeira ocorrência do


caracter carac dentro da String que chamou o método.
● Caso localize retorna o inteiro que indica a posição do caracter.
● Caso contrário retorna -1.

int ■ indexOf( char carac, int deOnde ): procura a primeira


ocorrência do caracter carac dentro da String que chamou o
método, a partir da posição deOnde.
● Caso localize retorna o inteiro que indica a posição do caracter.
● Caso contrário retorna -1.

int ■ indexOf( String s1 ): procura a primeira ocorrência da String


s1 dentro da String que chamou o método.
● Caso localize retorna o inteiro que indica o início desta
substring.
● Caso contrário retorna -1.
Fundamentos da Linguagem | 13
Localizando informações no objeto String

int ■ lastIndexOf( String s1 ): funciona semelhante ao método


indexOf, com todas as sobrecargas, embora, procure a última
ocorrência da String s1 dentro da String que chamou o método,
ou seja, realiza a busca a partir do seu final.
● Caso localize retorna o inteiro que indica o início desta
substring.
● Caso contrário retorna -1.

❑ Atenção: como em acesso a objetos Array, nas Strings, a


primeira posição sempre tem índice zero.

Fundamentos da Linguagem | 14
String - Exemplo 5

public class ExemploString5 {


public static void main( String[] args ) {
String texto = args[0]; String ped = args[1]; int res = 0;
res = texto.indexOf( ped );
if (res != -1 )
System.out.println( "indexOf: O Sub-texto [" + ped + "] foi localizado na posicao " + res );
else
System.out.println( "indexOf: O Sub-texto [" + ped + "] não foi localizado. resultado = " + res );

res = texto.lastIndexOf( ped );


if ( res != -1 )
System.out.println( "lastIndexOf: O Sub-texto [" + ped + "] foi localizado na posicao " + res );
else
System.out.println( "lastIndexOf: O Sub-texto [" + ped + "] não foi localizado. resultado = " + res
);
System.exit(0);
}
}

Fundamentos da Linguagem | 15
Retirando partes do texto

char ■ charAt( int indice ): retorna o caracter localizado na posição


indicada pelo parâmetro.

String ■ substring( int inicio ): retorna um novo objeto String com um


texto que vai do posição indicada por início até o final da
String.

inclusive - este exclusive – este


caracter é pego. caracter NÃO é pego.

String ■ substring( int inicio, int fim ): retorna um novo objeto String
com um texto que vai do posição indicada por início (inclusive)
até a posição indicada pelo segundo parâmetro (exclusive), da
String original.

Fundamentos da Linguagem | 16
String - Exemplo 6

public class ExemploString6 {


public static void main( String[] args ) {
String texto = "Um bom programador sabe vasculhar a documentação“;
System.out.println( texto );
System.out.println( "Tamanho do texto = " + texto.length() );
System.out.println( "Caracter da Posicao 20 = " + texto.charAt(20) );
System.out.println( "Sub-texto da posição 5 até a posição 25 = " + texto.substring( 5, 25 ) );
System.exit(0);
}
}

Fundamentos da Linguagem | 17
Substituindo partes do texto

String ■ replace( char c1, char c2 ): retorna uma nova String onde o
conteúdo da String que chamou o método teve todas as
ocorrências do caracter c1 trocadas pelo caracter c2.

String ■ replace( String s1, String s2 ): retorna uma nova String onde
o conteúdo da String que chamou o método teve todas as
ocorrências do sub-texto s1 trocadas pelo sub-texto s2.

String ■ replaceFirst( String s1, String s2 ): retorna uma nova String


onde o conteúdo da String que chamou o método teve apenas
a primeira ocorrência do sub-texto s1 trocada pelo sub-texto
s2.

Fundamentos da Linguagem | 18
String
■ Exemplo 7
public class ExemploString7 {
public static void main( String[] args ) {
String texto = args[0]; String parteTexto = "na"; String novoTexto = "ba";
String saida = " Texto original : " + texto;
saida += "\n sub-texto a ser trocado : " + parteTexto;
saida += "\n sub-texto a ser inserido : " + novoTexto;
texto = texto.replaceFirst( parteTexto, novoTexto );
saida += "\n Texto depois do metodo replaceFirst : " + texto;
texto = texto.replace( parteTexto, novoTexto );
saida += "\n Texto depois do metodo replace : " + texto;
System.out.println( " Trocando partes do texto:\n" + saida );
System.exit( 0 );
}
}

Fundamentos da Linguagem | 19
Métodos de uso diversos

- Outros exemplos de métodos de grande utilidade:


String ■ toUpperCase(): retorna uma nova String que contém o
conteúdo da String que chamou o método transformado em
letras maiúsculas.
■ toLowerCase(): retorna uma nova String que contém o
String conteúdo da String que chamou o método transformado em
letras minúsculas.
■ trim(): retorna uma nova String que contém o conteúdo da
String String que chamou o método retirando todos os espaços em
branco que apareciam no início e no fim do texto.
■ valueOf( parâmetro ): retorna uma nova String criada a partir
String do parâmetro passado. Pode receber qualquer tipo de dado
como parâmetro.

Fundamentos da Linguagem | 20
String
■ Exemplo 8
public class ExemploString8 {
public static void main( String[] args ) {
String texto = args[0];
String saida = "";
saida += "Texto original = [" + texto + "]\n";
texto = texto.trim();
saida += "Apos o metodo trim() = [" + texto + "]\n";
texto = texto.toLowerCase();
saida += "Apos o metodo toLowerCase() = [" + texto + "]\n";
texto = texto.toUpperCase();
saida += "Apos o metodo toUpperCase() = [" + texto + "]\n";
System.out.println( saida );
System.exit( 0 );
}
}

Fundamentos da Linguagem | 21
Conversão de String

Para converter String para outros tipos de dados:

Descrição Comando
String → int int numero = Integer.parseInt( "15" );

String → double double d = Double.parseDouble("4.1234567890" );

String → float float f = Float.parseFloat( "3.1234567" );

String → boolean boolean b = Boolean.parseBoolean( "true" );

String → char char c = varString.charAt( posicaoDoChar );


String s = String.valueOf( 2.3F );
Todos → String ou
String t = 3.4 + "";

Fundamentos da Linguagem | 22
Malhação Cerebral

MC6_03. Faça uma aplicação que receba uma frase, e depois apresente o texto
invertido (de trás para frente, caracter a caracter).
MC6_04. Faça uma aplicação que receba o nome completo do usuário em uma
única String, e depois troque o seu último sobrenome por "Silva“. Mostre o
resultado na tela.
MC6_05. Faça uma aplicação que receba uma frase do usuário e apresente uma
palavra por linha. Na frente de cada palavra deve aparecer entre parênteses a
quantidade de caracteres da palavra. Ao final, apresente
também o total geral de caracteres impressos.

Fundamentos da Linguagem | 23
Malhação Cerebral

MC6_06. Faça uma aplicação que receba uma expressão matemática de


soma que precisa ser resolvida. Esta expressão deve vir no formato
Num+Num, ou seja, números separados por um operador, sem espaços.
Apresente a expressão e o seu resultado.

MC6_07. Idem ao exercício anterior, todavia o usuário poderá escolher


entre as 4 operações básicas (+ - * / ).

Fundamentos da Linguagem | 24
Referências
■ SIERRA, Kathy & BATES, Bert. Use a cabeça Java. 2 ed. Rio de Janeiro: Alta
Books, 2005.
■ DEITEL, H. M.; DEITEL, P. J. Java: como programar. 4 ed. Porto Alegre:
Bookman, 2003.
■ HORSTMANN, Cay. Big Java. Porto Alegre: Bookman, 2004.
■ Material elaborado pela iniciativa JEDI (Java Education and Development
Initiative. http://www.dfjug.org/DFJUG/jedi/index.jsp
■ Material elaborado pelo Professor Alexandre Rômolo Moreira Feitosa da UTFPR
de Cornélio Procópio
■ Material elaborado pelo Professor Gabriel Canhadas Genvigir da UTFPR de
Cornélio Procópio
■ Material elaborado pelo Professor Davi Bernardo do IFSC de Gaspar.
■ Outros livros / revistas / WWW.

Fundamentos da Linguagem | 25
String
■ Java possui outras classes para armazenamento e
manipulação de textos, cada uma com características de
uso específicas:
❑ StringBuffer (java.lang): permite criar um objeto e alterar o seu
conteúdo dinamicamente, sem precisar recriar o objeto como a
classe String faz.
❑ StringBuilder (java.lang): funcionamento semelhante a
StringBuffer, só que permite alterações do texto sem sincronização
de Threads, seu uso é voltado para aplicações concorrentes.

❑ StringTokenizer (java.util): possui métodos para facilitar


a
quebra de uma frase em palavras ("tokens"). Ideal para a
construção de mecanismos de Parser.

Fundamentos da Linguagem | 26
String
■ E ainda outras classes para formatação de textos:

❑ DecimalFormat (java.text): permite criar objetos String de


números decimais definindo a formatação de números negativos e
de quantas casas após o ponto serão mostradas. Pode levar em
consideração questões de configuração regional da máquina do
usuário, por exemplo trocar o ( . ) pela ( , ).
❑ SimpleDateFormat (java.text): classe que auxilia a formatação
de textos de datas e horas para um padrão específico. Por
exemplo, data no formato dia/mês/ano. Pode levar em
consideração questões de configuração regional da máquina do
usuário.

Fundamentos da Linguagem | 27
Programação Orientada a
Objetos
Professor Vinícius Bortolini

Você também pode gostar