Módulo 05 Arrays - BCC Unifal-MG
Transcrição
Módulo 05 Arrays - BCC Unifal-MG
Módulo 05 Arrays Última atualização: 11/06/2010 Objetivos • Declarar e criar arrays. • Explicar como iniciar os elementos de um array. • Determinar o número de elementos de um array. • Percorrer um array com o loop for tradicional e com o loop for aprimorado • Criar um array multidimensional. • Usar a classe utilitária java.util.Arrays Declarando Arrays • Array é um grupo de objetos do mesmo tipo. • Podemos declarar arrays de tipos primitivos ou de referência: char s[]; Ponto p[]; ou char[] s; Ponto[] p; • Os exemplos acima criam o espaço para uma referência. • Um array é um objeto e, portanto deve ser criado com o operador new. Criando Arrays • Use o operador new para criar um objeto do tipo array. • Por exemplo, um array primitivo (char): public char[] criarArray() { char [] s; s = new char[26]; for (int i=0; i < 26; i++ ) { s[i] = (char) (‘A’ + i); } return s; } Criando Arrays • Outro exemplo: um array de objetos: public Ponto[] criarArray() { Ponto [] p; p = new Ponto[3]; for (int i=0; i < 3; i++ ) { p[i] = new Ponto(i, i+1); } } return p; Iniciando Arrays Cria um array com valores iniciais: String nomes[]; nomes = new String[3]; nomes[0] = “Rodrigo”; nomes[1] = “Natália”; nomes[2] = “Jean”; Data [] data; data = new Data[3] data[0] = new Data(22,07,1964); data[1] = new Data(07,05,1977); data[2] = new Data(06,02,2005); ou String [] nomes = {“Rodrigo”, “Natália”, “Jean”}; ou Data [] data ={new Data(22,07,1964), new Data(07,05,1977), new Data(06,02, 2005) }; Arrays Multidimensionais • Arrays de arrays: int duasDimensoes [][] = new int [4][]; duasDimensoes[0] = new int[5]; duasDimensoes[1] = new int[5]; // A linha abaixo resulta em erro, pois a primeira dimensão // deve ser especificada. int duasDimensoes [][] = new int [][4]; Arrays Multidimensionais • arrays de arrays não-retangulares: int duasDimensoes [][] duasDimensoes[0] = new duasDimensoes[1] = new duasDimensoes[2] = new duasDimensoes[3] = new = new int [4][]; int[2]; int[4]; int[6]; int[8]; • Array de quatro arrays com cinco inteiros cada (array retangular): int duasDimensoes[][] = new int[4][5]; Limites em Array • Todos índices de arrays iniciam em 0: ... int [] lista = new int[10]; … … for(int i=0; i < lista.length; i++) { //lista.lenght retorna 10 System.out.println(lista[i]); } ... • A variável length utilizada em arrays multi-dimensionais: int duasDimensoes[][] = new int[4][5]; System.out.println(duasDimensoes.length) // retorna 4 System.out.println(duasDimensoes[0].length) // retorna 5 Percorrendo um Array com o Loop for Aprimorado • O for aprimorado, também conhecido como foreach, foi introduzido a partir do Java 5 • O loop for aprimorado trabalha basicamente com dois tipos: arrays e coleções Aprenderemos coleções no capítulo 10 deste curso. public void testeLoopArray( ) { int[] primos = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 }; } // Exibe os números primos usando o loop for aprimorado for (int n : primos) { System.out.println(n); } Redimensionando Arrays • Um array não pode ser redimensionado • Podemos utilizar a mesma variável de referência apontando para um array totalmente novo: int meuArray[] = new int[6]; meuArray = new int[10]; A Classe java.util.Arrays Introduzida no Java 5 – Tiger A classe java.util.Arrays possui um conjunto de métodos estáticos utilitários (Aprenderemos métodos estáticos no módulo 07. Por hora apenas aprenderemos como utilizá-los): Estes métodos utilitários ajudam o programador no trabalho com arrays. A maioria destes métodos é bastante útil se você possuir um array de tipos numéricos primitivos. Métodos úteis: toString(), deepToString(), deepEquals(), equals(), fill(), sort(), binarySearch() O Método toString( ) da Classe Arrays Exibe o conteúdo de um array Exemplo: System.out.println(Arrays.toString(meuArray)); O Método deepToString da Classe Arrays • Este método recebe um array de objetos e exibe o seu conteúdo, incluindo o conteúdo de qualquer array que ele possa conter. Exemplo String[][] ticTacToe = { {"X", "O", "O"}, {"O", "X", "X"}, {"X", "O", "X"}}; System.out.println(Arrays.deepToString(ticTacToe)); gera a saída: [[X, 0, 0], [0, X, X], [X, 0, X]] Muito útil quando temos três ou mais níveis de arrays e não desejamos escrever nossas próprias rotinas recursivas de impressão. O Método deepEquals Classe Arrays Método para comparação de arrays multidimensionais String[][] ticTacToe = { {"X", "O", "O"}, {"O", "X", "X"}, {"X", "O", "X"}}; String[][] ticTacToe2 = { {"O", "O", "X"}, {"O", "X", "X"}, {"X", "O", "X"}}; String[][] ticTacToe3 = { {"X", "O", "O"}, {"O", "X", "X"}, {"X", "O", "X"}}; if (Arrays.deepEquals(ticTacToe, ticTacToe2)) { System.out.println("Matrizes 1 e 2 são iguais."); } else { System.out.println("Matrizes 1 e 2 são diferentes."); // Saída gerada } if (Arrays.deepEquals(ticTacToe, ticTacToe3)) { System.out.println("Matrizes 1 e 3 são iguais."); // Saída gerada } else { System.out.println("Matrizes 1 e 3 são diferentes.");} Exemplo: ArraysTester Mostra diversos outros métodos úteis da classe Arrays, como: equals(), fill(), sort(), binarySearch() Executar e estudar no laboratório ou em casa !!! Os Métodos System.arrayCopy( ) e outros métodos utilitários da classe Arrays serão vistos no capítulo 10 - Coleções PERGUNTAS?
Documentos relacionados
Introdução à linguagem de programação java. - fcfrp
public class Operadores { public static void main(String[] args) { int i = 4; int j = 2; System.out.println("i + j: " + (i + j)); System.out.println("i - j: " + (i - j)); System.out.println("i * j:...
Leia mais