Você está na página 1de 44

JAVA

Referncias, Strings e
Arrays
+
Faculdade Mauricio de Nassau
Linguagem de Programao II
Curso de Engenharia de Telecomunicaes

2
+ 3

Tipos

Tipos Tipos de
primitivos referncia
Classes,
int, float, ... interfaces, ...
+ 4

Referncias

 Varivel primitiva guarda seu valor;


 Varivel de objeto guarda um endereo para
ele;
 Uma referncia pode ser imaginada como um
apontador para o local onde est armazenado
o objeto;
num1 38

nome1 Fulano"
+ 5

Referncias

 O que acontece?

num1 38
Antes:
num2 96

num2 = num1;

num1 38
Depois:
num2 38
+ 6

Referncias

 O que acontece?

nome1 Gabriel Silva


Antes:
nome2 Rafael Silva

nome1 = nome2;

nome1 Rafael Silva


Depois:
nome2
+ 7

Referncias

 Em Java no se trabalha diretamente com


os objetos, mas com as referncias para os
objetos;
 Isso
altera a maneira como copiamos e
comparamos os objetos;
+ 8

Strings

 Seqncia de caracteres;
 Em Java, String no tipo primitivo;
 tipo de referncia  so objetos!

String str = Ol Mundo!;

String str = new String(Ol Mundo!);


+ 9

Igualdade de Strings

 O operador ==
no deve ser usado para
compararmos se duas Strings so iguais;
 Deve-se usar o mtodo equals da classe
String

str1 == str2

str1.equals(str2)
+ 10

Strings

boolean equals(Object o)

String x = Gabriel;
String y = Silva;
boolean b = x.equals(y); //b == false
+ 11

Strings

 int indexOf(String s):


 Retorna o ndice do primeiro encontrado;
 ndices em Java comeam em 0;
 Caso no encontre, retorna -1;

String x = Clique para adicionar anotaes;


String y = adicionar;
int i = x.indexOf(y); // i == 12
+ 12

Strings

 String substring(int inicio, int fim):


 Retorna a substring do ndice inicio (inclusivo)
at o ndice fim (exclusivo);

String x = Clique para adicionar anotaes;


String y = x.substring(2, 5);
// y iqu
+ 13

Strings

 char charAt(int indice):


 Caracter da posio ndice;

String x = Clique para adicionar anotaes;


char c = x.charAt(0); // c == C
+ 14

Strings

 boolean equalsIgnoreCase(Object o)
 igualdadeignorando diferenas entre
maisculas e minsculas

 int length()
 comprimento da strings; quantidade de
caracteres
+ 15

Prtica

1. Refatore as classe Conta e Cliente,


implementando os seus respectivos
mtodos equals.
 Lembre que o mtodo equals deve ter a seguinte
assinatura: public boolean equals(Object o);
2. Utilize os mtodos equals implementados
na questo anterior para comparar duas
instncias de conta e duas instncias de
cliente.
+ 16

Tipo Enumervel

 Adicionado na verso 5.0 de Java;


 Coleo de constantes que pertencem a uma
nica ideia;
 Em Java, todo tipo enum uma classe;
 Todo enum herda implicitamente de
java.lang.Enum:
 No pode herdar de mais nenhuma outra classe;
 Veremos herana mais pra frente.
+ 17

Tipo Enumervel

 Os elementos devem ser separados por


vrgula
public enum TipoCliente {
NORMAL,
ESPECIAL,
OURO
}

Cliente c = new Cliente(TipoCliente.OURO);


+ 18

Tipo Enumervel

 Como todo enum public enum TipoCliente {


NORMAL (0.1F),
uma classe, podemos ESPECIAL (0.2F),
adicionar mtodos e OURO (0.3F)

atributos a ele private float taxa;

TipoCliente(float taxa) {
this.taxa = taxa;
}

public float getTaxa() {


return this.taxa;
}
}
+ 19

Prtica

1. Implemente o enum TipoCliente. Este


deve ser composto pelas constantes
NORMAL, ESPECIAL e OURO.
2. Refatore a classe Cliente para que ela
possua uma referncia para um
TipoCliente.
+ 20

Arrays

 So listas ordenadas de valores que permitem


armazenar uma grande quantidade de informao;

Nome do array Cada valor tem um ndice numrico


inteiro

0 1 2 3 4 5 6 7 8 9
valores 79 87 94 82 67 98 87 81 74 91

Um array de tamanho N indexado de 0 a N-1

Esse array guarda 10 valores indexados de 0 a 9


+ 21

Arrays

 Tambm so Objetos  tipos de


referncia;
 Todos os elementos de um array so do
mesmo tipo;
 Arrays tm tamanho fixo depois de
criados;
+ 22

Arrays

0 1 2 3 4 5 6 7 8 9
79 87 94 82 67 98 87 81 74 91

int i = valores[3]; // i == 82

 Para referenciar um determinado valor armazenado em um


array, usa-se o nome do array seguido do ndice entre
colchetes
 Essa expresso representa um inteiro e pode ser usada em
qualquer lugar que uma varivel de tipo inteiro pudesse
tambm
+ 23

Arrays

 Outra maneira de descrever um array


valores 79
87
94
82
67
98
87
81
74
91
+ 24

Arrays

 E para tipos referncia


words amizade
lealdade
honra
-
-
+ 25

Declarando Arrays

int[] valores = new int[10];

 O tipoda varivel valores int[] (um array de


inteiros)
 A varivel valores referencia um novo objeto array
que pode armazenar 10 inteiros
 Outros exemplos:

float[] precos = new float[100];


String[] nomes = new String[21];
+ 26

Estruturas de Controle [2]

 Estruturas de repetio permitem executar um trecho de cdigo


vrias vezes;
 Tambm podem ser chamados de loops;
 Assim como as estruturas condicionais, estruturas de repetio
tambm so controladas por expresses booleanas;
 Tipos de estruturas de repetio em Java
 while
 do while
 for
 for (foreach)

 Cada situao pede um tipo de loop diferente!


+ 27

while

while (condicao) {
// instruo
}

 Se condicao for true, ento a instruo executada

 Aps aexecuo ter sido realizada, se a condicao


continuar true, instruo realizada novamente
 A execuo se repete indefinidamente at a
condicao tornar-se false
+ 28

while

avalia
condio

true
false

instruo
+ 29

while

int x = 10;
int[] a = {4, 2, 5, 1, 10};
boolean achou = false;
int i = 0;

while (achou == false && i < a.length) {


if (a[i] == x) {
achou = true;
}
}

System.out.println(achou);
+ 30

Loop infinito

 CUIDADO!
 Caso a condio do loop nunca seja false, ento
aquele lao ser executado para sempre;
 Erro de programao muito comum;
+ 31

Loop Aninhado

 Um loop pode conter uma outra estrutura


de repetio dentro do seu corpo;
 Para cada
iterao externa, deve-se
completar a interna;
+ 32

do while

do {
// instruo
} while(condicao);

 A instruo executada uma primeira vez


 A condicao avaliada e caso seja true, a
instruo executada novamente
 A instrucao se repete indefinidamente at a
condicao tornar-se false
+ 33

do while

instruo

true

avalia
condio

false
+ 34

do while

int i = 0;
do {
i = i + 1;
System.out.println(i);
} while (i < 5);

 O corpo
do do while executado pelo
menos uma vez
+ 35

for

for (inicializacao; condicao; incremento) {


// instruo
}

 A inicializacao executada uma vez antes do loop


comear
 A instruo executada at a condicao tornar-se
false
 O incremento executado ao final de cada
iterao
+ 36

for

inicializao

avalia
condio
false
true

instruo

incremento
+ 37

for

int[] a = new int[10];


for (int i = 0; i < a.length; i++) {
a[i] = i * 2;
}
 O campo de inicializao pode ser usado para declarar uma
varivel
 O campo de incremento pode ser calculado da forma que o
programador quiser
 Usa-se o for quando sabemos o nmero de iteraes ou
quando ele facilmente calculado
+ 38

for (foreach)

for (Tipo variavel : colecao) {


// instruo
}

 Introduzido na verso 5.0;


 Para cada elemento
+ 39

for (foreach)

int[] numeros = {1, 2, 5, 7, 11, 13, 17, 19};


for (int i : numeros) {
System.out.println(i);
}

 Para cada elemento da coleo realiza-se


a(s) instruo(es) do corpo do for;
+ 40

Inicializando Arrays

 Existem vrias formas de faz-lo


int[] numeros = {13, 43, 1, 123} ;

String[] animais = {cachorro, macaco,


cavalo};

float[] precos = new float[5];


for (int i = 0; i < precos.length; i++) {
precos[i] = 10 * (i + 1);
}
+ 41

Arrays Multidimensionais

 Arrays unidimensionais armazenam uma


lista de elementos;
 Arrays bidimensionaispodem ser
imaginados como uma tabela (matriz),
com linhas e colunas;
 Arrays podemter quantas dimenses
forem necessrias;
+ 42

Arrays Multidimensionais

 Em Java
um array multidimensional no
nada mais do que um array de arrays;
 Um array bidimensionalpode ser
declarado especificando-se o tamanho de
cada dimenso separadamente;

int[][] matriz = new int[3][3];


+ 43

Arrays Multidimensionais

 O elemento referenciado usando dois


ndices:
int valor = matriz[3][1];

 Um array armazenado em uma linha, pode


ser referenciado usando um ndice:
int[] linha = matriz[2];
+ 44

Arrays

 Se feito
um acesso a um elemento do
array fora dos seus limites, gerada um
exceo:
 IndexOutOfBoundsException

String[] animais = {Cavalo, Cachorro};


System.out.println(animais[2]);
+ 45

Prtica

1. Implemente a classe RepositorioConta. Esta deve


ser responsvel pro armazenar um conjunto de
contas num array. Alm disto deve possuir os
mtodos inserir (insere uma conta no array),
remover (remove uma conta do array), pesquisar
(retorna uma conta do array que possua o
mesmo nmero).
2. Faa o mesmo para a classe Cliente, retornando
no mtodo pesquisar o cliente que possuir o
mesmo cpf.

Você também pode gostar