Linguagem I Strings Revisão • Loops – for – while – do – while • Arrays – Estruturas estáticas de armazenamento. • Erros – ArrayIndexOutOfBoundsException – Miss by one Davi Pires {[email protected]} Flashback... • Voltemos ao HelloWorld public class HelloWorld { public static void main (String[] args) { System.out.println("Hello World!"); } } “Nem tudo no código é código.” Davi Pires {[email protected]} Literais • Quando inicializamos variáveis diretamente no código, usamos literais. • Já conhecemos literais numéricos e booleanos. • E quanto a “Hello World!” ? Davi Pires {[email protected]} Strings • Texto (seqüências de caracteres) são armazenadas em Java na forma de Strings. • Inicialização de Strings – Usando literais. – Usando o comando new Davi Pires {[email protected]} Inicialização de Strings • Java assume que os literais de String não mudam nunca. • Por isso duas variáveis com o mesmo valor literal podem ter também o mesmo objeto. String a = “uma string”; “uma string” String b = “uma string”; Davi Pires {[email protected]} Inicialização de Strings • Vários Construtores: – String( ) – String( byte[ ] bytes ) – String( char[ ] chars ) – String( String original ) – String( StringBuffer buffer ) – ... • Todos inicializam novos objetos. Davi Pires {[email protected]} Inicialização de Strings String a = “uma string”; “uma string” String b = new String(a); String a = “uma string”; “uma string” String b = “uma string”; Davi Pires {[email protected]} Strings • Exemplos – StringConstrutores.java Davi Pires {[email protected]} Strings • Métodos interessantes da classe String – char charAt(int posicao); – String substring(int posicao); – int compareTo(String outraString); – String concat(String outraString); – int length(); – String valueOf(..); – void trim(); – ... Davi Pires {[email protected]} Strings • Exemplos: – Codificacao.java Davi Pires {[email protected]} Strings • Exercícios: – Faça um método que identifica se uma dada String é parte de outra String. – [ opcional ] Converta datas como “08/04/2005” em “08 de Abril de 2005”. – [ opcional ] Implementar o método que decodifica uma String, que tenha sido codificada pelo Codificador. Davi Pires {[email protected]} Strings • Usos comuns de Strings: – como texto. – como atributos de objetos. • Exemplo: Conta.java – como chaves de busca. • Exemplo: próximo slide! Davi Pires {[email protected]} Strings • Comparando Strings String a = “uma string”; String b = new String(a); if(a == b) { System.out.println(“a e b são iguais.”); } else { System.out.println(“a e b são diferentes.”); } if(a.equals(b)) { System.out.println(“a e b são iguais.”); } else { System.out.println(“a e b são diferentes.”); } Davi Pires {[email protected]} == equals() Strings • Exemplo – RepositorioContas.java Davi Pires {[email protected]} Strings • Outros métodos para comparação: – boolean equalsIgnoreCase(String string); • Ignora maiúsculas e minúsculas. – int compareTo(String string); • Ordem alfabética (ou lexicográfico). Davi Pires {[email protected]} Console • A classe Console fornece métodos para leitura / impressão de Strings. – String readString( ); – void print(String input); Davi Pires {[email protected]} Revisão Dúvidas • Quais exercícios você não conseguiu fazer? • Quais aulas foram mais difíceis? • Quais estruturas você não entende como funciona? • Feedback – O que faltou? – O que teve demais? Davi Pires {[email protected]} Palavras reservadas boolean case default float if int package short this break char do for import long private switch void byte class double else while new public return Davi Pires {[email protected]} Revisão • Aula 1: – Características de Java – Compilador vs. Interpretador. – Tipos Primitivos – Operadores – Casts Davi Pires {[email protected]} Revisão • Aula 2: – Classes – Atributos – Métodos – Construtores – Palavras-chave • class, void, return, new, this, null Davi Pires {[email protected]} Revisão • Aula 3: – Pacotes – Importações – Modificadores de Visibilidade – Encapsulamento Davi Pires {[email protected]} Revisão • Aula 4: – Programação não-estruturada. – Controle de Fluxo • • • • if if – else if – else if switch – case – Classe Console Davi Pires {[email protected]} Revisão • Aula 5: – Loops • for • while • do – while – Arrays • Armazenamento – Erros com arrays Davi Pires {[email protected]} Revisão • Aula 6: – Literais – Inicializando Strings – Métodos da classe String – Comparações de Strings – Classe Console e Strings Davi Pires {[email protected]} Exercícios Alto nível Exercícios • Crivo de Eratóstenes • Dado um certo número inteiro, retorne todos os números primos menores do que ele. Davi Pires {[email protected]} Exercícios • Faça um programa que calcule a multiplicação, a divisão, o resto da divisão e o fatorial de 2 números. • Trivial, né? Agora tente fazer isso sem usar os operadores *, /, e % . • REUSE seu código o máximo possível. Davi Pires {[email protected]} Exercício • Faça um método que, dado um array de inteiros, ele seja capaz de colocar os inteiros em ordem ascendente. • Agora, faça um método que, dado um array de Strings, ele seja capaz de colocar as Strings em ordem alfabética. – veja o método compareTo(String string); Davi Pires {[email protected]} Exercícios • Use o que você sabe sobre: – Strings – Busca em Arrays • E faça um dicionário! – Dada uma palavra, ele busca no array de, digamos, EntradaDeDicionario, e retorna o significado da palavra. – Inicialize o dicionário “na mão”, mesmo. Davi Pires {[email protected]} Exercícios • Uma alternativa ao exercício anterior. • Implemente um programa a ser usado por uma loja de CD’s. • Os clientes podem buscar cd’s tanto pelo nome do artista como pelo nome do álbum. • A busca retorna os dados do CD – Artista. – Nome do álbum. – Lista de músicas. Davi Pires {[email protected]} Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso Não-Comercial-Compatilhamento pela mesma licença. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.0/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.