Arrays
Versão 2.0
O que é um array?
Array
• Um array é uma coleção ordenada de valores
• Os valores podem ser primitivos, objetos ou
outros arrays
• Todos os valores de um array devem ser do
mesmo tipo
• Um array é um objeto!
Array
• São armazenados em uma localização de memória
contínua
• Cada localização pode ser referenciada
individualmente através do seu índice
• Isto significa que, por exemplo, é possível
armazenar 5 valores do tipo int em um array sem
precisar declarar 5 variáveis
4
Exemplo Matriz Unidimencional
• Uma declaração para array em Java é:
type [elements] name;
int[] billy = new int[5];
5
Inicializando Matrizes
• Quando declaramos um array ele será
inicializado, porém seu conteúdo permanecerá
indeterminado até definirmos um
int[] billy = {16, 2, 77, 40, 12071};
6
Array Exemplos
byte b;
byte[] arrayOfBytes;
byte[][] arrayOfArrayOfBytes;
Conta[] contas; //array de Conta
7
Criando um array
• Arrays não precisam ser inicializados no ato de sua
criação
– Precisa especificar o tamanho
• Arrays tem tamanho fixo:
– Uma vez criado, não pode crescer ou diminuir
– Cada posição é inicializada com valor default do tipo
do array
byte[] buffer = new byte[1024];
String[] lines = new String[50];
8
Acessando um array
• Em qualquer ponto do programa que o array for
visível é possível acessar o valor dos elementos
individualmente
– billy [2] = 75;
– a = billy[2];
– billy[0] = a;
– b = billy[a+2];
– c = billy[2]+5;
9
Tamanho do array
• Acessando o tamanho de um array
– Através do atributo length
– length é um atributo constante (final) e
public de todo objeto array
Conta[] contas = new Conta[1];
if([Link] != 2){
...
}
10
Visualizando um array
int[] values = new int[100];
for(int i = 0; i < [Link]; i++){
values[i] = i*2;
}
int[] powersOfTwo = {1, 2, 4, 8, 16, 32, 64};
11
Exercício
• Faça uma função que calcule o somatório de
todos os elementos da matriz
12
Mais Exercícios
• Dada uma sequencia de n números
armazenados em uma matriz, imprima-os na
ordem inversa a da leitura
14
Mais Exercícios
• Fazer um programa ler um vetor de inteiros e
positivos e imprimir quantas vezes aparece o
número 1, 3 e 4, nesta ordem. O vetor terá no
máximo 30 posições.
16
Matrizes Multidimencionais
• Podem ser descritos como matriz de matrizes
• Uma matriz bidimencional pode ser imaginada
como uma tabela de elementos
int[][] jimmy = new int[3][5];
18
Exemplo
jimmy[1][3];
19
Matrizes Multidimencionais
• Matrizes não são limitadas a dois índices
– Exemplo, duas dimensões
• Eles podem conter quantos índices forem
necessário
• Cuidado porque a memória pode ser consumida
char[][][][][] century = new char [100][365][24][60][60];
//Consome 3Gb da memory
20
Inicializando Matrizes Multid.
char PT = ‘*’;
char v[][] = {{PT,PT,PT},{PT,PT,PT},{PT,PT,PT}};
// Inicialize a matriz abaixo:
int[][][] tresd = new int[3][2][4];
21
Inicializando Matrizes Multid.
int [][][] tresd = {
{{1,2,3,4},{5,6,7,8}},
{{7,9,3,2},{4,6,8,3}},
{{7,2,6,3},{0,1,9,4}}
};
22
Mais detalhes
• Matrizes multidimensionais são apenas uma
abstração para programadores
• É possível obter o mesmo resultado com uma
matriz simples
int[][] jimmy = new int[3][5]; //é equivalente
int[] jimmy = new int[15]; //(3*5) = 15
23
Array bidimensional, exemplo
int[][] pontos = { {10,10},
{10,20},
{20,10},
{20,20}};
int[][] pontos = new int[4][2];
for(int i = 0; i < 4; i++)
for(int j = 0; j < 2; j++)
pontos[i][j] = [Link](); 24
25
Declaração de arrays multimensionais
float[][][] globalTemperatureData = new float[360][][100];
float[][][] globalTemperatureData = new float[][180][100];
// vai compilar?
26
Arrays multimensionais não retangulares
• Em Java, arrays multidimensionais são
considerados arrays de arrays
• Diferente de outras linguagens, que consideram
arrays como arrays de blocos idênticos
int[][] produtos = {{0}
{0,1},
{0,1,2,3},
{0,1,2,3,4}};
27
Exercício
• Dado dois vetores, A (5 elementos) e B (8
elementos), faça um programa que imprima
todos os elementos comuns aos dois vetores.
28
Mais Exercícios
• Suponha um vetor A com 10 elementos e outro
vetor B com 10 elementos. Faça um programa
em C++ que calcule o produto escalar P de A por
B. (Isto é, P = A[0]*B[0] + A[1]*B[1] +
... A[N]*B[N]).
29
Arrays como argumentos
• Arrays podem ser passados como parâmetro
para funções
• Em Java não é possível passar o bloco de
memória inteiro
• É possível passar o endereço da matriz
void procedure(int[] arg) //parâmetro
int[] myarray = new int[40]; //declarando a matriz
procedure(myarray);//chamada da função
30
Arrays como argumentos
• O nome de um array desacompanhado de
colchetes representa o endereço de memória
onde o array foi armazenado
• O nome de uma variável simples representa o
valor nela contido
• O nome de um array representa seu endereço de
memória
32
Passagem por referência
• As matrizes são consideradas um tipo de dado
bastante grande
• Em Java existe apenas uma única cópia do array
na memória
• Sendo assim, os valores não são passados os
valores contidos no array, somente seu
endereço de memória
33
Passagem por referência
• O que ocorre quando o endereço de um array é
passado para uma função como argumento?
• A função usa o endereço para acessar os
elementos do próprio array
• As alterações que forem feitas no array pela
função afetarão o array original
34
Exercício
• Fazer um programa para ler 20 notas (inteiros e
positivos) e calcular a média. Imprimir também
o maior.
• Utilize a matriz na passagem de parâmetro para
função de calculo
36
Sequencia de caracteres
• O uso mais comum de array unidimensionais é
como string de caracteres
• Em Java, uma String é definida como um array
de caracteres que é terminada por um nulo
• Um nulo é especificado como ‘\0’ e geralmente
é zero
37
Exemplo
char [] jenny = new char[20];
char[] jenny = {‘H’,‘e’,’l’,’l’,’o’,’\0’}
38
Exercício
39
Exercício 1/3
41
Exercício 2/3
42
Exercício 3/3
43
Coleção de contas com array
• Crie uma classe que guarda as contas num array de contas
– Repositório ou conjunto de contas
– Atributos: Array de conta e Índice
• Crie o construtor
• Crie os métodos para inserção, procura e remoção dos
objetos
• Crie os métodos para creditar e debitar valores das contas
do array
43
44
Classe principal
45