Java - Matrizes
Java fornece uma estrutura de dados, o array , que armazena uma coleção sequencial de tamanho fixo de elementos do mesmo tipo. Uma matriz é usada para armazenar uma coleção de dados, mas geralmente é mais útil pensar em uma matriz como uma coleção de variáveis do mesmo tipo.
Em vez de declarar variáveis individuais, como número0, número1, ... e número99, você declara uma variável de matriz, como números e usa números[0], números[1] e ..., números[99] para representar variáveis individuais.
Este tutorial apresenta como declarar variáveis de matriz, criar matrizes e processar matrizes usando variáveis indexadas.
Declarando variáveis de matriz
Para usar um array em um programa, você deve declarar uma variável para referenciar o array e deve especificar o tipo de array que a variável pode referenciar. Aqui está a sintaxe para declarar uma variável de matriz -
Sintaxe
dataType[] arrayRefVar; // preferred way. or dataType arrayRefVar[]; // works but not preferred way.
Observação − O estilo dataType[] arrayRefVar é preferível. O estilo dataType arrayRefVar[] vem do C/C++ linguagem e foi adotado em Java para acomodar C/C++ programadores.
Exemplo
Os trechos de código a seguir são exemplos dessa sintaxe -
double[] myList; // preferred way. or double myList[]; // works but not preferred way.
Criando matrizes
Você pode criar uma matriz usando o novo operador com a seguinte sintaxe -
Sintaxe
arrayRefVar = new dataType[arraySize];
A declaração acima faz duas coisas -
-
Ele cria um array usando new dataType[arraySize].
-
Ele atribui a referência do array recém-criado à variável arrayRefVar.
Declarar uma variável de matriz, criar uma matriz e atribuir a referência da matriz à variável pode ser combinado em uma instrução, conforme mostrado abaixo −
dataType[] arrayRefVar = new dataType[arraySize];
Alternativamente, você pode criar arrays da seguinte forma -
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Os elementos do array são acessados através do index . Os índices de matriz são baseados em 0; ou seja, eles começam de 0 a arrayRefVar.length-1 .
Exemplo
A instrução a seguir declara uma variável de array, myList, cria um array de 10 elementos do tipo double e atribui sua referência a myList −
double[] myList = new double[10];
A imagem a seguir representa a matriz myList. Aqui, myList contém dez valores duplos e os índices são de 0 a 9.
Processando Matrizes
Ao processar elementos de matriz, geralmente usamos for loop ou foreach loop porque todos os elementos em uma matriz são do mesmo tipo e o tamanho da matriz é conhecido.
Exemplo
Aqui está um exemplo completo mostrando como criar, inicializar e processar arrays -
Demonstração ao vivo
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // Print all the array elements for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } // Summing all elements double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); // Finding the largest element double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("Max is " + max); } }
Isso produzirá o seguinte resultado -
Saída
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
Os loops foreach
O JDK 1.5 introduziu um novo loop for conhecido como loop foreach ou loop for aprimorado, que permite percorrer a matriz completa sequencialmente sem usar uma variável de índice.
Exemplo
O código a seguir exibe todos os elementos no array myList −
Demonstração ao vivo
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // Print all the array elements for (double element: myList) { System.out.println(element); } } }
Isso produzirá o seguinte resultado -
Saída
1.9 2.9 3.4 3.5
Passando arrays para métodos
Assim como você pode passar valores de tipo primitivo para métodos, você também pode passar arrays para métodos. Por exemplo, o método a seguir exibe os elementos em um int matriz -
Exemplo
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }
Você pode invocá-lo passando um array. Por exemplo, a instrução a seguir invoca o método printArray para exibir 3, 1, 2, 6, 4 e 2 −
Exemplo
printArray(new int[]{3, 1, 2, 6, 4, 2});
Retornando uma matriz de um método
Um método também pode retornar um array. Por exemplo, o método a seguir retorna uma matriz que é a reversão de outra matriz −
Exemplo
public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; }
A classe de matrizes
A classe java.util.Arrays contém vários métodos estáticos para classificar e pesquisar arrays, comparar arrays e preencher elementos de array. Esses métodos são sobrecarregados para todos os tipos primitivos.
Nº Sr. | Método e descrição |
---|---|
1 | public static int binarySearch(Object[] a, Object key) Pesquisa a matriz especificada de Object ( Byte, Int , double, etc.) para o valor especificado usando o algoritmo de pesquisa binária. A matriz deve ser classificada antes de fazer essa chamada. Isso retorna o índice da chave de pesquisa, se estiver na lista; caso contrário, retorna ( – (ponto de inserção + 1)). |
2 | public static boolean equals(long[] a, long[] a2) Retorna true se os dois arrays de longs especificados forem iguais entre si. Duas matrizes são consideradas iguais se ambas as matrizes contiverem o mesmo número de elementos e todos os pares de elementos correspondentes nas duas matrizes forem iguais. Isso retorna true se as duas matrizes forem iguais. O mesmo método pode ser usado por todos os outros tipos de dados primitivos (Byte, short, Int, etc.) |
3 | preenchimento de vazio estático público(int[] a, int val) Atribui o valor int especificado a cada elemento da matriz de ints especificada. O mesmo método pode ser usado por todos os outros tipos de dados primitivos (Byte, short, Int, etc.) |
4 | public static void sort(Object[] a) Classifica a matriz de objetos especificada em ordem crescente, de acordo com a ordenação natural de seus elementos. O mesmo método pode ser usado por todos os outros tipos de dados primitivos (Byte, short, Int, etc.) |
Java
- Matrizes C#
- Operadores Java
- Copiar Matrizes Java
- Interface Java
- Java try-with-resources
- Anotações Java
- Matrizes em C++ | Declare | Inicializar | Ponteiro para exemplos de matriz
- Alocação dinâmica de matrizes em C++ com exemplo
- Tutorial Java Arrays:Declare, Crie, Inicialize [Exemplo]
- Como criar uma matriz de objetos em Java