Matrizes são uma das estruturas de dados importantes para cada linguagem de programação. É claro que diferentes linguagens implementam e processam matrizes de maneira diferente.
Matrizes fornecidas na linguagem Java são usadas para armazenar elementos de tamanho fixo do mesmo tipo.
Você pode declarar uma variável de matriz, como números[100] em vez de declarar diretamente 100 variáveis independentes número0, número1, ...., número99.
Este tutorial apresentará a declaração, criação e inicialização de arrays Java e fornecerá o código correspondente.
Variáveis de array devem primeiro ser declaradas antes que um array possa ser usado em um programa. A seguir está a sintaxe para declarar variáveis de array:
dataType[]arrayRefVar;//首选的方法或dataTypearrayRefVar[];//效果相同,但不是首选方法
Nota: É recomendado usar o estilo de declaração dataType[] arrayRefVar para declarar variáveis de array. O estilo dataType arrayRefVar[] vem da linguagem C/C++ e é adotado em Java para permitir que os programadores C/C++ entendam rapidamente a linguagem java.
Aqui estão exemplos de código para ambas as sintaxes:
double[]myList;//首选的方法或doublemyList[];//效果相同,但不是首选方法
A linguagem Java usa o operador new para criar um array.
arrayRefVar=newdataType[arraySize];
A instrução de sintaxe acima faz duas coisas:
1. Crie um array usando dataType[arraySize].
2. Atribua a referência do array recém-criado à variável arrayRefVar.
A declaração das variáveis do array e a criação do array podem ser completadas em uma instrução, conforme mostrado abaixo:
dataType[]arrayRefVar=newdataType[arraySize];
Além disso, você também pode criar um array usando o método a seguir.
dataType[]arrayRefVar={value0,value1,...,valuek};
Os elementos de um array são acessados por índice. A indexação do array começa em 0, então os valores do índice variam de 0 a arrayRefVar.length-1.
Então, quando o array abrir espaço, você poderá operar da seguinte maneira:
Exemplo: Definir uma matriz int
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
Além de declarar e alocar espaço, o próprio array possui outro modo de alocação.
Exemplo: Use o modo passo a passo para abrir espaço no array
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; /*开辟了一个长度为3的数组*/ data[0] = 10; // 第一个元素 data[1] = 20; // 第二个元素 data[2] = 30; // 第三个元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通过循环控制索引 } } }
Mas lembre-se de que os arrays são tipos de dados de referência, portanto o espaço deve ser alocado (instanciado) antes do array ser usado. Se um array sem espaço alocado for usado, uma mensagem NullPointerException
definitivamente aparecerá:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; System.out.println(data[x]); } }
Este princípio é exatamente o mesmo que foi explicado anteriormente.
Definitivamente, matrizes serão usadas durante o desenvolvimento, mas operações como as acima são raras. No futuro desenvolvimento real, o conceito de array será mais usado e, quando usado diretamente, na maioria dos casos é apenas uma saída de loop for.
O tipo de elemento do array e o tamanho do array são determinados, portanto, ao processar os elementos do array, geralmente usamos um loop básico ou um loop foreach.
Este exemplo demonstra completamente como criar, inicializar e manipular arrays:
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(inti=0;i<myList.length;i++){ System.out.println(myList[i]+""); } //计算所有元素的总和doubletotal=0; for(inti=0;i<myList.length;i++){ total+=myList[i]; } System.out.println("Totalis"+total); //查找最大元素doublemax=myList[0]; for(inti=1;i<myList.length;i++){ if(myList[i]>max)max=myList[i]; } System.out.println("Maxis"+max); } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
1.9 2.9 3.4 3.5 Totalis11.7 Maxis3.5
O JDK 1.5 introduziu um novo tipo de loop, chamado loop foreach ou loop aprimorado, que itera em um array sem usar subscritos.
O formato da sintaxe é o seguinte:
for(type element: array){ System.out.println(element); }
Este exemplo é usado para exibir todos os elementos do array myList:
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(doubleelement:myList){ System.out.println(element); } } }
Os resultados de compilação e execução do exemplo acima são os seguintes:
1.9 2.9 3.4 3.5
Arrays podem ser passados como parâmetros para métodos. Por exemplo, o exemplo a seguir é um método que imprime os elementos em uma matriz int.
publicstaticvoidprintArray(int[]array){ for(inti=0;i<array.length;i++){ System.out.print(array[i]+""); } }
O exemplo a seguir chama o método printArray para imprimir 3, 1, 2, 6, 4 e 2:
printArray(newint[]{3,1,2,6,4,2});
publicstaticint[]reverse(int[]list){ int[]result=newint[list.length]; for(inti=0,j=result.length-1;i<list.length;i++,j--){ result[j]=list[i]; } returnresult; }
No exemplo acima, a matriz de resultados é usada como o valor de retorno da função.
A classe java.util.Arrays pode operar matrizes de maneira conveniente e todos os métodos que ela fornece são estáticos. Tem as seguintes funções:
Atribua um valor ao array: através do método fill.
Classifique o array: use o método sort, em ordem crescente.
Compare matrizes: use o método equals para comparar se os valores dos elementos na matriz são iguais.
Procurando por elementos do array: O método binarySearch pode executar uma operação de pesquisa binária no array classificado.
Consulte a tabela abaixo para obter instruções específicas:
número de série | Métodos e instruções |
---|---|
1 | public static int binarySearch(Object[] a, Object key) usa um algoritmo de pesquisa binária para procurar um objeto com um determinado valor (Byte, Int, double, etc.) na matriz fornecida. A matriz deve ser classificada antes da chamada. Se o valor de pesquisa estiver contido em uma matriz, retorna o índice da chave de pesquisa; caso contrário, retorna (-( ponto de inserção ) - 1). |
2 | public static boolean equals(long[] a, long[] a2) Retorna verdadeiro se as duas matrizes longas especificadas forem iguais entre si. Duas matrizes são consideradas iguais se contiverem o mesmo número de elementos e todos os pares de elementos correspondentes em ambas as matrizes forem iguais. Em outras palavras, duas matrizes são iguais se contiverem os mesmos elementos na mesma ordem. A mesma abordagem funciona para todos os outros tipos de dados básicos (Byte, short, Int, etc.). |
3 | public static void fill(int[] a, int val) atribui o valor int especificado a cada elemento no intervalo especificado da matriz de tipo int especificada. A mesma abordagem funciona para todos os outros tipos de dados básicos (Byte, short, Int, etc.). |
4 | public static void sort(Object[] a) classifica o array de objetos especificado em ordem crescente de acordo com a ordem natural de seus elementos. A mesma abordagem funciona para todos os outros tipos de dados básicos (Byte, short, Int, etc.). |