Post on 21-Apr-2015
Aula 3Aula 3
Igor Ebrahim (ies)
if669 - Introdução à Programação
Monitoria de IP
Agenda
• Declarando e Usando Arrays• Arrays de Objetos• Arrays Bidimensionais
Arrays
• Arrays são listas ordenadas de valores que permitem armazenar uma grande quantidade de informação;
0 1 2 3 4 5 6 7 8 9
79 87 94 82 67 98 87 81 74 91
Um array de tamanho N é indexado de 0 a N-1
valores
Nome do array inteiro
Cada valor tem um índice numérico
Esse array guarda 10 valores indexados de 0 a 9
Arrays
• Para referenciar um determinado valor armazenado em um array, usa-se o nome do array seguido do índice entre colchetes;
• Exemplo:valores[3]; // valor 82 índice 3
• Essa expressão representa um inteiro e pode ser usada em qualquer lugar que uma variável de inteiro pudesse também;
0 1 2 3 4 5 6 7 8 9
79 87 94 82 67 98 87 81 74 91
Arrays
• Por exemplo, um elemento de array pode receber um valor, ser impresso ou usado em algum cálculo:
valores[2] = 89;
valores[primeiro] = valores[primeiro] + 2;
media = (valores[0] + valores[1])/2;
MiniJavaSystem console;
console = new MiniJavaSystem();
console.println(“Maior = " + valores[5]);
Arrays
• Os valores guardados no array são chamados de elementos do array;
• Um array armazena múltiplos valores do mesmo tipo – o tipo do elemento;
• O tipo do elemento pode ser um tipo primitivo ou uma referência para um objeto;
• Portanto, podemos criar um array de inteiros, um array de chars, um array de objetos;
• Em Java, o próprio array é um objeto e precisa ser instanciado;
Arrays
• Outra maneira de descrever um array:
valores 79
87
94
82
67
98
87
81
74
91
Declarando Arrays
• O array valores pode ser declarado assim:int[] valores = new int[10];
• O tipo da variável valores é int[] (um array de inteiros);
• A variável valores referencia um novo objeto array que pode armazenar 10 inteiros;
• Alguns outros exemplos:
float[] precos = new float[500];
boolean[] flags;
flags = new boolean[20];
char[] codigo = new char[1750];
Usando Arrayspublic class BasicArray {
final static int LIMIT = 15;
final static int MULTIPLE = 10;
public static void main (String[] args) {
int[] list = new int[LIMIT];
// Inicializa os valores do array
for (int index = 0; index < LIMIT; index++)
list[index] = index * MULTIPLE;
for (int index = 0; index < LIMIT; index++)
System.out.print (list[index] + " ");
System.out.println ();
}
}
Checando os Limites
• No momento em que o array é criado ele tem seu tamanho fixado;
• Um índice usado para referenciar um valor do array deve apontar para um elemento válido;
• Isto é, o índice deve estar no intervalo de 0 a N-1;• Caso haja a tentativa de se ler fora do intervalo
permitido, Java lança uma exceção (ArrayIndexOutOfBoundsException);
Checando os Limites
• No momento em que o array é criado ele tem seu tamanho fixado;
• Um índice usado para referenciar um valor do array deve apontar para um elemento válido;
• Isto é, o índice deve estar no intervalo de 0 a N-1;• Caso haja a tentativa de se ler fora do intervalo
permitido, Java lança uma exceção (ArrayIndexOutOfBoundsException);
• Erro comum:
for (int index=0; index <= 100; index++)codes[index] = index*50 + epsilon;
problema
Checando os Limites
• Cada array tem uma constante pública chamada lenght que armazena o tamanho do array;
• Ele é usada da seguinte maneira:valores.lenght
• Note que o lenght armazena o número de elementos e não o maior índice do array;
Sintaxe Alternativa
• Os colchetes podem estar associados ao tipo dos elementos do array ou ao seu nome;
• Portanto, as duas declarações seguintes são equivalentes:
float[] precos;
float precos[];
• O primeiro formato é mais legível e, por isso, mais usado também.
Inicialização
• Podemos inicializar um array com apenas um passo:int[] units = {147, 323, 89, 933, 540, 269, 97, 114, 298, 476};char[] letterGrades = {'A', 'B', 'C',
'D', ’F'};
• Os valores são delimitados por chaves e separados por vírgulas;
• Note que desta maneira não o new não é usado e o tamanho não especificado (o tamanho é determinado pelo números de itens na lista);
• Este tipo de inicialização só pode ser usado na declaração do array;
Arrays como Parâmetros
• Um array inteiro pode ser passado como parâmetro para um método;
• Assim como os objetos, é passada ao método uma referencia para o array;
• Portanto, mudando um elemento do array no corpo deste método acarretará a mudança do original;
• Um único elemento do array também pode ser passado como parâmetro de um método;
Arrays de Objetos
• Os elementos de um array podem ser referências para objetos;
• A seguinte declaração reserva espaço para armazenar 5 referências para Strings:
String[] words = new String[5];• Isto não instancia as Strings. Inicialmente é tudo
null;• Cada objeto deve ser instanciado separadamente;
Arrays de Objetos
• O array words quando inicializado:
words -
-
-
-
-
• Neste ponto, a seguinte referência lançaria uma NullPointerException:
MiniJavaSystem c = new MiniJavaSystem();c.println (words[0]);
Arrays de Objetos
• Após algumas Strings serem criadas e armazenadas no array;
“amizade”words
-
-
“lealdade”
“honra”
Arrays Bidimensionais
• Arrays unidimensionais armazenam uma lista de elementos;
• Arrays bidimensionais podem ser imaginados como uma tabela, com linhas e colunas;
unidimensional bidimensional
Arrays Bidimensionais
• Para ser preciso, em Java um array bidimenisonal não nada mais do que um array de arrays;
• Um array bidimensional pode ser declarado especificando o tamanho de cada dimensão separadamente:
int [][] valores = new int[12][30];• O elemento é referenciado usando dois índices:
int valor = valores[3][6];• Um array armazenado em uma linha, pode ser
referenciado usando um índice:
int[] linha = valores[3];