Logo Passei Direto
Buscar
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Universidade Federal de PernambucoUniversidade Federal de Pernambuco
Centro de InformáticaCentro de Informática
P1 – Strings, Enum, Arrays
Universidade Federal de PernambucoUniversidade Federal de Pernambuco
Centro de InformáticaCentro de Informática
© 2010, Roberto S. M. Barros, Ph.D. 1
P1 – Strings, Enum, Arrays
Prof. Roberto Souto Maior de Barros
roberto@cin.ufpe.br
Tipos referência
• Em Java há dois conjuntos de tipos 
– Tipos primitivos
– Tipos referência
• Tipos primitivos – alocação estática
© 2010, Roberto S. M. Barros, Ph.D. 2
• Tipos primitivos – alocação estática
– int, long, double, float, ...
• Tipos referência – alocação dinâmica
– classes, interfaces, arrays, ...
Tipos de referência
• Em Java não se trabalha diretamente com os 
objetos e sim com seus endereços, i.e.
referências a objetosreferências a objetos
• Isso tem implicações na maneira em que 
© 2010, Roberto S. M. Barros, Ph.D. 3
• Isso tem implicações na maneira em que 
objetos são comparados e copiados
Referências
Objetos são manipulados através de referências
c == nullc == nullConta c = Conta c = nullnull;;
c = c = newnew Conta (“1287”,0);Conta (“1287”,0); cc
© 2010, Roberto S. M. Barros, Ph.D. 4
c = c = newnew Conta (“1287”,0);Conta (“1287”,0);
c.getSaldo();c.getSaldo();
cc
chama o método chama o método getSaldogetSaldo do do 
objeto referenciado pela variável cobjeto referenciado pela variável c
Mais de uma variável pode armazenar 
a referência de um mesmo objeto
Conta a = Conta a = newnew Conta(“123Conta(“123--4”,340.0);4”,340.0);
Conta b;Conta b;
aa e e bb passam a referenciarpassam a referenciar
Referências
© 2010, Roberto S. M. Barros, Ph.D. 5
Conta b;Conta b;
b = a; b = a; 
b.creditar(100);b.creditar(100);
SystemSystem.out.println(a.getSaldo());.out.println(a.getSaldo());
aa e e bb passam a referenciarpassam a referenciar
a mesma contaa mesma conta
qualquer efeito via qualquer efeito via bb é refletido via é refletido via aa
Strings
• São seqüências de caracteres
• Não há um tipo primitivo para Strings em Java
• Em Java, Strings são objetos!
• Classe String disponibilizada em API Java
© 2010, Roberto S. M. Barros, Ph.D. 6
• Classe String disponibilizada em API Java
String mensagem = “Operação concluída com sucesso”;String mensagem = “Operação concluída com sucesso”;String mensagem = “Operação concluída com sucesso”;String mensagem = “Operação concluída com sucesso”;
Aqui Java cria um novo objetoAqui Java cria um novo objeto
do tipo String e armazena sua do tipo String e armazena sua 
referência na variávelreferência na variável mensagemmensagem
Concatenação de Strings
• Operador + é usado para concatenação
String nome = "George"; String nome = "George"; 
String sobrenome = "Bush";String sobrenome = "Bush";
String nomeCompleto = nome + " " + sobrenome;String nomeCompleto = nome + " " + sobrenome;
© 2010, Roberto S. M. Barros, Ph.D. 7
intint anos = 10;anos = 10;
doubledouble rendimento = 1270.49;rendimento = 1270.49;
String s = "Em " + anos + " anos o " +String s = "Em " + anos + " anos o " +
"rendimento será de " + rendimento;"rendimento será de " + rendimento;
SystemSystem.out.println(s);.out.println(s);
A conversão para A conversão para 
String é feita String é feita 
automaticamenteautomaticamente
Strings são tipos referência
String s1 = "George";
String s2 = "George";
s1s1
s2s2
GGeeoo rr ggee
s1 = s1 + " Bush";s1 = s1 + " Bush";
s2 = s2 + " Bush";s2 = s2 + " Bush"; Ao manipular um String, Ao manipular um String, 
© 2010, Roberto S. M. Barros, Ph.D. 8
s1s1
s2s2
GGeeoo rr ggeeGGeeoo rr ggee
BBuu sshh
GGeeoo rr ggee
BBuu sshh
s2 = s2 + " Bush";s2 = s2 + " Bush"; Ao manipular um String, Ao manipular um String, 
um novo String é gerado!um novo String é gerado!
Igualdade de Strings
• Para testar se dois Strings são iguais, não 
deve ser usado ==
• Deve-se usar o método equals:
© 2010, Roberto S. M. Barros, Ph.D. 9
s1 == s2s1 == s2
s1.s1.equalsequals(s2)(s2)
Igualdade de Strings
// Cria dois novos // Cria dois novos StringsStrings
String s1 = "George"; String s1 = "George"; 
String s2 = "George";String s2 = "George";
// Nesse momento, s1 == s2 é verdadeiro!// Nesse momento, s1 == s2 é verdadeiro!
s1 = s1 + " Bush"; // Cria um novo string e o atribui para s1s1 = s1 + " Bush"; // Cria um novo string e o atribui para s1
s2 = s2 + " Bush"; // Cria um novo string e o atribui para s2s2 = s2 + " Bush"; // Cria um novo string e o atribui para s2
© 2010, Roberto S. M. Barros, Ph.D. 10
ifif (s1 == s2) (s1 == s2) 
SystemSystem..out.printlnout.println("s1 e s2 são os mesmos objetos");("s1 e s2 são os mesmos objetos");
elseelse
SystemSystem..out.printlnout.println("s1 e s2 NÃO são os mesmos objetos");("s1 e s2 NÃO são os mesmos objetos");
ifif (s1.(s1.equalsequals(s2)) (s2)) 
SystemSystem..out.printlnout.println("s1 e s2 possuem o mesmo conteúdo");("s1 e s2 possuem o mesmo conteúdo");
elseelse
SystemSystem..out.printlnout.println("s1 e s2 NÃO possuem o mesmo conteúdo");("s1 e s2 NÃO possuem o mesmo conteúdo");
• boolean equals (umString)
• boolean equalsIgnoreCase (umString)
• int length ()
String a = "Sharon Stone";String a = "Sharon Stone";
String b = "String b = "sharonsharon stonestone";";
Strings: Comparação e comprimento
© 2010, Roberto S. M. Barros, Ph.D. 11
String b = "String b = "sharonsharon stonestone";";
int int comprimentocomprimento = = a.lengtha.length();();
boolean boolean resposta1resposta1 = = a.equalsa.equals(b);(b);
boolean boolean resposta2resposta2 = = a.equalsIgnoreCasea.equalsIgnoreCase(b);(b);
boolean boolean resposta3resposta3 = = b.equalsIgnoreCaseb.equalsIgnoreCase(a);(a);
Qual o valor das respostas?Qual o valor das respostas?
String: tratamento
• String toLowerCase()
• String toUpperCase()
• String trim()
String x = " Bom Dia! ";String x = " Bom Dia! ";
© 2010, Roberto S. M. Barros, Ph.D. 12
String x = " Bom Dia! ";String x = " Bom Dia! ";
String y = x.toUpperCase();String y = x.toUpperCase();
String z = x.toLowerCase();String z = x.toLowerCase();
String w = x.trim();String w = x.trim();
System.out.println(y);System.out.println(y);
System.out.println(z);System.out.println(z);
System.out.println(w);System.out.println(w);
BOM DIA! BOM DIA! 
bom dia!bom dia!
Bom Dia!Bom Dia!
Strings: índices e substrings
• int indexOf (umString)
• String substring (int indiceInicio, int indiceFinal)
• char charAt(int indice)
Retorna um Retorna um substringsubstring de de 
indiceInicio até indiceFinalindiceInicio até indiceFinal--11
Índices em Java Índices em Java 
começam a partir de 0começam a partir de 0
© 2010, Roberto S. M. Barros, Ph.D. 13
String x = "Pernambuco";String x = "Pernambuco";
String y = x.substring(0,5);String y = x.substring(0,5);
String z = x.substring(6,10);String z = x.substring(6,10);
int indice = x.indexOf("na");int indice = x.indexOf("na");
char letra = x.charAt(5);char letra = x.charAt(5);
System.out.println(x); System.out.println(y);System.out.println(x); System.out.println(y);
System.out.println(z); System.out.println(indice);System.out.println(z); System.out.println(indice);
System.out.println(letra);System.out.println(letra);
Qual é a saída?Qual é a saída?
Tipo Enumeração
• Representa um conjunto de constantes que 
pertencem a uma única abstração.
• O conceito foi trazido do C++, porém em Java todo 
tipo enum é uma classe.
• Todo enum estende implicitamente da classe 
© 2010, Roberto S. M. Barros, Ph.D. 14
• Todo enum estende implicitamente da classe 
java.lang.Enum, por isso não pode estender mais 
nenhuma classe.
• Como nos strings, Java possui um suporte especial 
ao tipo enum permitindo que na maior parte do 
tempo ele seja tratado como tipo primitivo.• Foi adicionado na versão 5.0 (Tiger) da linguagem.
Tipo Enumeração
• A declaração de um tipo enum é semelhante à 
declaração de uma classe
• Os elementos devem ser separados por vírgulas
publicpublic enumenum DiasDaSemanaDiasDaSemana {{
DOMINGODOMINGO,,
publicpublic enumenum DiasDaSemanaDiasDaSemana {{
DOMINGODOMINGO,,
© 2010, Roberto S. M. Barros, Ph.D. 15
DOMINGODOMINGO,,
SEGUNDASEGUNDA,,
TERCATERCA,,
QUARTAQUARTA,,
QUINTAQUINTA,,
SEXTASEXTA,,
SABADOSABADO
}}
DOMINGODOMINGO,,
SEGUNDASEGUNDA,,
TERCATERCA,,
QUARTAQUARTA,,
QUINTAQUINTA,,
SEXTASEXTA,,
SABADOSABADO
}}
Tipo Enumeração
• Podemos usar o tipo enum como um tipo 
primitivo fazendo uma inicialização implícita
public static void public static void mainmain (String (String argsargs) {) {
DiasDaSemanaDiasDaSemana dia;dia;
public static void public static void mainmain (String (String argsargs) {) {
DiasDaSemanaDiasDaSemana dia;dia;
© 2010, Roberto S. M. Barros, Ph.D. 16
dia = dia = DiasDaSemanaDiasDaSemana..DOMINGODOMINGO;;
SystemSystem..out.printlnout.println ((“Dia escolhido: ” “Dia escolhido: ” ++ dia);dia);
}}
dia = dia = DiasDaSemanaDiasDaSemana..DOMINGODOMINGO;;
SystemSystem..out.printlnout.println ((“Dia escolhido: ” “Dia escolhido: ” ++ dia);dia);
}}
Dia escolhido: DOMINGODia escolhido: DOMINGO SaídaSaída
Tipo Enumeração
• Como todo enum é uma classe, podemos 
adicionar métodos e atributos a ele.
• Os enums só aceitam construtores com 
visibilidade private ou package (default)
© 2010, Roberto S. M. Barros, Ph.D. 17
visibilidade private ou package (default)
Tipo Enumeração
publicpublic enumenum DiasDaSemanaDiasDaSemana {{
DOMINGO DOMINGO (2),(2),
SEGUNDA SEGUNDA (1),(1),
TERCA TERCA (1),(1),
QUARTA QUARTA (1),(1),
QUINTA QUINTA (1),(1),
SEXTA SEXTA (1),(1),
SABADO SABADO (1.5F);(1.5F);
publicpublic enumenum DiasDaSemanaDiasDaSemana {{
DOMINGO DOMINGO (2),(2),
SEGUNDA SEGUNDA (1),(1),
TERCA TERCA (1),(1),
QUARTA QUARTA (1),(1),
QUINTA QUINTA (1),(1),
SEXTA SEXTA (1),(1),
SABADO SABADO (1.5F);(1.5F);
Passagem de parâmetroPassagem de parâmetro
ao construtorao construtor
Atributo do Atributo do enumenum
© 2010, Roberto S. M. Barros, Ph.D. 18
SABADO SABADO (1.5F);(1.5F);
privateprivate floatfloat multiplicadorHoramultiplicadorHora;;
DiasDaSemanaDiasDaSemana ( ( floatfloat multiplicadormultiplicador) {) {
multiplicadorHoramultiplicadorHora = = multiplicadormultiplicador; }; }
publicpublic floatfloat getMultiplicadorHoragetMultiplicadorHora () {() {
returnreturn multiplicadorHoramultiplicadorHora; ; 
}}
}}
SABADO SABADO (1.5F);(1.5F);
privateprivate floatfloat multiplicadorHoramultiplicadorHora;;
DiasDaSemanaDiasDaSemana ( ( floatfloat multiplicadormultiplicador) {) {
multiplicadorHoramultiplicadorHora = = multiplicadormultiplicador; }; }
publicpublic floatfloat getMultiplicadorHoragetMultiplicadorHora () {() {
returnreturn multiplicadorHoramultiplicadorHora; ; 
}}
}}
Tipo Enumeração
public static void public static void mainmain (String (String argsargs) {) {
floatfloat valorHoraTrabvalorHoraTrab = 20.00F;= 20.00F;
floatfloat QuantidadeHorasTrabalhadasQuantidadeHorasTrabalhadas = 8F;= 8F;
floatfloat valorASerRecebidovalorASerRecebido = = valorHoraTrabvalorHoraTrab ** QuantidadeHorasTrabalhadasQuantidadeHorasTrabalhadas;;
DiasDaSemanaDiasDaSemana dia;dia;
dia = dia = DiasDaSemanaDiasDaSemana..DOMINGODOMINGO;;
System.System.out.printlnout.println ( ( “Valor a receber pelo dia: ” “Valor a receber pelo dia: ” ++
public static void public static void mainmain (String (String argsargs) {) {
floatfloat valorHoraTrabvalorHoraTrab = 20.00F;= 20.00F;
floatfloat QuantidadeHorasTrabalhadasQuantidadeHorasTrabalhadas = 8F;= 8F;
floatfloat valorASerRecebidovalorASerRecebido = = valorHoraTrabvalorHoraTrab ** QuantidadeHorasTrabalhadasQuantidadeHorasTrabalhadas;;
DiasDaSemanaDiasDaSemana dia;dia;
dia = dia = DiasDaSemanaDiasDaSemana..DOMINGODOMINGO;;
System.System.out.printlnout.println ( ( “Valor a receber pelo dia: ” “Valor a receber pelo dia: ” ++
Saída 1Saída 1
© 2010, Roberto S. M. Barros, Ph.D. 19
System.System.out.printlnout.println ( ( “Valor a receber pelo dia: ” “Valor a receber pelo dia: ” ++
valorASerRecebidovalorASerRecebido * * dia.getMultiplicadorHoradia.getMultiplicadorHora()() ););
dia = dia = DiasDaSemanaDiasDaSemana..SEGUNDASEGUNDA;;
System.System.out.printlnout.println ( ( “Valor a receber pelo dia: ” “Valor a receber pelo dia: ” ++
valorASerRecebidovalorASerRecebido * * dia.getMultiplicadorHoradia.getMultiplicadorHora()() ););
}}
System.System.out.printlnout.println ( ( “Valor a receber pelo dia: ” “Valor a receber pelo dia: ” ++
valorASerRecebidovalorASerRecebido * * dia.getMultiplicadorHoradia.getMultiplicadorHora()() ););
dia = dia = DiasDaSemanaDiasDaSemana..SEGUNDASEGUNDA;;
System.System.out.printlnout.println ( ( “Valor a receber pelo dia: ” “Valor a receber pelo dia: ” ++
valorASerRecebidovalorASerRecebido * * dia.getMultiplicadorHoradia.getMultiplicadorHora()() ););
}} Valor a receber pelo dia: 320Valor a receber pelo dia: 320 Saída 2Saída 211
Valor a receber pelo dia: 160Valor a receber pelo dia: 16022
Arrays
• São variáveis compostas homogêneas.
– Conjunto de variáveis de um mesmo tipo e com um 
nome único
– Para se referir a cada um dos componentes usa-se 
um ou mais índices.
© 2010, Roberto S. M. Barros, Ph.D. 20
– Em Java, arrays têm tamanho fixo depois de criados
• Muitas vezes é preciso “prever” o tamanho máximo!
• Ao contrário de outras linguagens, em Java 
arrays também são tipos referência.
Arrays
• Tipos de arrays:
– Unidimensionais – vetores
– Bidimensionais – Matrizes
– Multidimensionais
• Vantagens
© 2010, Roberto S. M. Barros, Ph.D. 21
• Vantagens
– Evitar criar nomes diferentes para várias variáveis 
que contenham informações semelhantes.
– Facilitar a repetição de comandos usando várias 
variáveis (os elementos de um array) usando os 
comandos de repetição, o que evita escrever várias 
vezes estes comandos.
Declaração e criação de Arrays
intint[] a;[] a;
doubledouble[] x;[] x;
Cliente[] clientes; Cliente[] clientes; Primeiro item: a[0]Primeiro item: a[0]Último item: a[99]Último item: a[99]
© 2010, Roberto S. M. Barros, Ph.D. 22
intint[] a = [] a = newnew intint[100];[100];
String[] nomes = String[] nomes = newnew String[200];String[200];
Inicialização de Arrays
int[] primosPequenos = {2, 3, 5, 7, 11, 13};int[] primosPequenos = {2, 3, 5, 7, 11, 13};
String[] cores = String[] cores = 
{"Vermelho", "Azul", "Amarelo"};{"Vermelho", "Azul", "Amarelo"};
© 2010, Roberto S. M. Barros, Ph.D. 23
doubledouble[][] salarios = salarios = new doublenew double[5];[5];
for (int i = 0; i<5; i++) {for (int i = 0; i<5; i++) {
salarios[i] = i * 1000;salarios[i] = i * 1000;
}}
Arrays multidimensionais
int[][] matriz;int[][] matriz;
int[][] matriz = new int[10][5];int[][] matriz = new int[10][5];
for (int i=0; i<10; i++)for (int i=0; i<10; i++)
for (int j=0; j<5; j++)for (int j=0; j<5; j++)
Declaração não Declaração não 
especifica dimensõesespecifica dimensões
Cria e inicializa Cria e inicializa 
© 2010, Roberto S. M. Barros, Ph.D. 24
for (int j=0; j<5; j++)for (int j=0; j<5; j++)
matriz[i][j] = 100;matriz[i][j] = 100;
long[][] x = { {0,1}, {2,3}, {4,5} };long[][] x = { {0,1}, {2,3}, {4,5} };
Cria um Cria um arrayarray
de 3 por 2de 3 por 2
x[0][0]x[0][0] x[0][1]x[0][1]
x[2][0]x[2][0]
Cria e inicializa Cria e inicializa 
um um arrayarray bidimensionalbidimensional
Acesso inválido
• O índice pode ser qualquer expressão, desde 
que o resultado esteja dentro dos limites
– Se é feitoacesso a um elemento indefinido de um 
array, é gerada uma exceção – erro fatal
•• IndexOutOfBoundsExceptionIndexOutOfBoundsException
© 2010, Roberto S. M. Barros, Ph.D. 25
•• IndexOutOfBoundsExceptionIndexOutOfBoundsException
String nomes[] = {"José", "João", "Maria"};String nomes[] = {"José", "João", "Maria"};
SystemSystem..outout..printlnprintln(nomes[5]);(nomes[5]);
Gera um erro em Gera um erro em 
tempo de execuçãotempo de execução
Exercícios
• Ler 2 vetores de tamanho N informado pelo 
usuário antes, some os 2 vetores e imprimir o 
vetor resultado.
• Ler as notas de 10 alunos, calcular a média 
© 2010, Roberto S. M. Barros, Ph.D. 26
• Ler as notas de 10 alunos, calcular a média 
aritmética e imprimir as notas que sejam 
maiores do que a média calculada.
Exercícios
• Ler uma sequência de números inteiros positivos 
(ou zero)
– A leitura deve parar com um número negativo.
– Usuário digitará no máximo 1000 números.
• O programa deve imprimir os números lidos cujos 
© 2010, Roberto S. M. Barros, Ph.D. 27
• O programa deve imprimir os números lidos cujos 
valores têm dois dígitos, mas na ordem inversa 
em que forem lidos – o último número lido deve 
ser o primeiro a ser impresso.

Mais conteúdos dessa disciplina

Mais conteúdos dessa disciplina