Sunteți pe pagina 1din 12
Java Básico ArrayArray Prof. Jucimar Souza
Java Básico
ArrayArray
Prof. Jucimar Souza
01 – Instrodução Array É uma estrutura de dados Todos os itens tem o mesmo
01 – Instrodução
Array
É uma estrutura de dados
Todos os itens tem o mesmo tipo
Tem o seu tamanho definido no momento da criação
Grupo continuo de alocação de memória
Também chamado de Vetor ou Matriz Unidimencional
c[ 0 ] Nome do array (Note que todos os elementos do vetor tem o
c[ 0 ]
Nome do array (Note
que todos os elementos
do vetor tem o mesmo
nome, c)
-45
c[ 1 ]
6
c[ 2 ]
0
c[ 3 ]
72
c[ 4 ]
1543
c[ 5 ]
-89
c[ 6 ]
0
c[ 7 ]
62
-3
c[ 8 ]
1
Número da posição (indice
) do elemento do array c
c[ 9 ]
6453
c[ 10 ]
78
c[ 11 ]
02 - Array Examinando o vetor c c é o nome do vetor c.length retorna
02 - Array
Examinando o vetor c
c é o nome do vetor
c.length retorna o comprimento do vetor
(número de posições)
c tem 12 elementos (c[0],c[1],
,c[11])
O valor de c[0] é -45
Os colchetes [] estão no nivel mais alto de
precedência em Java
03 – Declarando e Alocando Vetores Declarando e alocando um vetor Vetores são objetos que
03 – Declarando e Alocando Vetores
Declarando e alocando um vetor
Vetores são objetos que ocupam memória
Alocado dinamicamente com o operador new
int c[] = new int[ 12 ];
É equivalente a:
int c[];
// declaração do vetor
c = new int[ 12 ]; // aloca o vetor
Podemos alocar um vetor de objetos assim
String b[] = new String[ 100 ];
04 –Usando vetores Acessando o vetor meuVetor[1]=5; Inicializando valores no vetor: int meuVetor[]
04 –Usando vetores
Acessando o vetor
meuVetor[1]=5;
Inicializando valores no vetor:
int meuVetor[] ={5,3,4,25,12,10,8,15,16};
Acumulando valores:
for (int i=0;i<meuVetor.length;i++)
total+=meuVetor[i];
05 – Arrays de Referências É comum ouvirmos “array de objetos”. Quando criamos uma array
05 – Arrays de Referências
É comum ouvirmos “array de objetos”.
Quando criamos uma array de alguma
classe, ela possui referências.
O objeto, como sempre, está na memória
principal e, na sua array, só ficam
guardadas as referências (endereços).
Exemplo:
Conta[] minhasContas;
minhasContas = new Conta[10];
Quantas contas foram criadas aqui?
05 – Arrays de Referências (Cont) Na verdade, nenhuma. Foram criados 10 espaços que você
05 – Arrays de Referências (Cont)
Na verdade, nenhuma.
Foram criados 10 espaços que você pode
utilizar para guardar uma referência a uma
Conta. Por enquanto, eles se referenciam
para lugar nenhum (null).
05 – Arrays de Referências (Cont) Você pode popular sua array assim: Conta contaNova =
05 – Arrays de Referências (Cont)
Você pode popular sua array assim:
Conta contaNova = new Conta();
contaNova.saldo = 1000.0;
minhasContas[0] = contaNova;
Ou você pode fazer isso diretamente:
minhasContas[1] = new Conta();
minhasContas[1].saldo = 3200.0;
05 – Arrays de Referências (Cont) Uma array de tipos primitivos guarda valores, uma array
05 – Arrays de Referências (Cont)
Uma array de tipos primitivos guarda valores, uma array
de objetos guarda referências.
06 –Passagem de Parâmetros Existem duas maneiras de passar parâmetros para um método Por valor
06 –Passagem de Parâmetros
Existem duas maneiras de passar
parâmetros para um método
Por valor
Copia do valor do argumento é passado na chamado
do método;
Em Java todos os tipos primitivos são passados por
valor
Por Referência
O chamador dá ao método chamado acesso direto
aos dados
O método chamado pode manipular estes dados
06 –Passagem de Parâmetros Por Referencia (Continuação) É mais rápido que a passagem por valor
06 –Passagem de Parâmetros
Por Referencia (Continuação)
É mais rápido que a passagem por valor
Em Java, todo objeto é passado por referência
Em Java, Array são objetos
Por este motivo a passagem de parâmetros quando
usado um vetor (array) é por referência
06 – Passando Arrays para um método Para passar um argumento array para um método:
06 – Passando Arrays para um método
Para passar um argumento array para um
método:
Especifique o nome do array sem colchetes
Vetor temperatura é declarado como
int temperatura = new int [24]
A chamada do método
mudaVetor(temperatura);
Passa o vetor temperatura para o método mudaValor
class PassaVetor{ public static void main(String args[]) { int array[] = { 1, 2, 3,
class PassaVetor{
public static void main(String args[])
{
int array[] = { 1, 2, 3, 4, 5 };
System.out.println("Efeito da passagem de parametros por referencia :\n" +
"Os valores originais do vetor são :\n");
for ( int conta = 0; conta < array.length; conta++ )
System.out.print("
" + array[ conta ]);
mudaVetor( array ); // passagem de parametros por referencia
System.out.println("\n\nOs valores modificados pelo metodo são :\n");
// Dados modificados
for ( int conta = 0; conta < array.length; conta++ )
System.out.print("
" + array[ conta ]);
System.out.println("\n\nEfeito da passagem por valor de " +
"um elemento do vetor :\n" +
"a[3] antes do metodo mudaElemento: " + array[ 3 ]);
// chamando o metodo
mudaElemento( array[ 3 ] );
System.out.println("\na[3] depois do mudaElemento: " + array[ 3 ]);
}
// fim do main
// multiplica cada elemento por 2 static void mudaVetor( int array2[] ) { for (
// multiplica cada elemento por 2
static void mudaVetor( int array2[] )
{
for ( int i = 0; i < array2.length; i++ )
array2[ i ] *= 2;
}
// multiplica o argumento por 2
static void mudaElemento( int elemento )
{
elemento *= 2;
}
} //fim da classe
07 – Arrays Multidimencionais (Matrizes) Multiplas dimensões Tabela com linhas e colunas Declarando um array
07 – Arrays Multidimencionais (Matrizes)
Multiplas dimensões
Tabela com linhas e colunas
Declarando um array com duas dimensões b[2][2]
int b[][] = { {1,2},{3,4} };
1 e 2 foram inicializados em b[0][0] e b[0][1]
3 e 4 foram inicializados em b[1][0] e b[1][1]
int b[][] = { {1,2},{3,4,5} };
A linha 0 com 1 e 2
A linha 1 com 3 , 4 e 5
07 – Arrays Multidimencionais(Matrizes) - (cont) Alocando um array de multiplas dimensões Pode-se alocar uma
07 – Arrays Multidimencionais(Matrizes) - (cont)
Alocando um array de multiplas dimensões
Pode-se alocar uma matriz 3 x 4 assim
int b[][];
b = new int [3][4];
As linhas podem ter numeros diferente de
colunas
int b[][];
b = new int[ 2 ][ ];
// aloca 2 linhas
b[ 0 ] = new int[ 5 ]; // aloca 5 col.
b[ 1 ] = new int[ 3 ]; // aloca 3 col.
na linha 0
na linha 1
07 – Arrays Multidimencionais(Matrizes) - (cont) Coluna 0 Coluna 1 Coluna 2 Coluna 3 Linha
07 – Arrays Multidimencionais(Matrizes) - (cont)
Coluna 0
Coluna 1
Coluna 2
Coluna 3
Linha 0
a[ 0
][ 0 ]
a[ 0
][ 1 ]
a[ 0
][ 2 ]
a[ 0
][ 3 ]
Linha 1
a[ 1
][ 0 ]
a[ 1
][ 1 ]
a[ 1
][ 2 ]
a[ 1
][ 3 ]
Linha 2
a[ 2
][ 0 ]
a[ 2
][ 1 ]
a[ 2
][ 2 ]
a[ 2
][ 3 ]
Indice da coluna
Indice da Linha
Nome do Array
07 – Arrays Multidimencionais(Matrizes) - (cont) Array de objetos de duas dimensões
07 – Arrays Multidimencionais(Matrizes) - (cont)
Array de objetos de duas dimensões
07 – Arrays Multidimencionais(Matrizes) - (cont) Array de objetos com duas dimensões onde as linhas
07 – Arrays Multidimencionais(Matrizes) - (cont)
Array de objetos com duas dimensões onde as linhas tem
tamanhos direfentes.
08 – Estrutura for aprimorada (enhanced-for) for ( parâmetro : nomeDoVetor) instrução Parametro é divido
08 – Estrutura for aprimorada (enhanced-for)
for ( parâmetro : nomeDoVetor)
instrução
Parametro é divido em duas partes o tipo e
identificador.
Ex.: for (int i: meuVetor)
System.out.println(i);
09 – Percorrendo vetores no Java 5 class VetoresJava5{ public static void main(String args[]) {
09 – Percorrendo vetores no Java 5
class VetoresJava5{
public static void main(String args[]) {
int[] idades = new int[10];
for (int i = 0; i < 10; i++) {
idades[i] = i * 10;
}
for (int x : idades) {
System.out.println(x);
}
}
}
E agora nem precisamos mais do length para percorrer matrizes que não
conhecemos seu tamanho:
void imprimeArray(int[] array) {
for (int x : array) {
System.out.println(x);
}
}
Exercicio Utilize a classe ContaCorrente que fizemos no curso anterior. Instancie um vetor com 10
Exercicio
Utilize a classe ContaCorrente que fizemos
no curso anterior. Instancie um vetor com
10 posições onde em cada posição vai
apontar para uma instancia da classe
ContaCorrente.
Atribua valores diretamente ou via
digitação, e imprima os dados utilizando um
enhanced-for.