Las matrices son una de las estructuras de datos importantes para cada lenguaje de programación. Por supuesto, diferentes lenguajes implementan y procesan matrices de manera diferente.
Las matrices proporcionadas en el lenguaje Java se utilizan para almacenar elementos de tamaño fijo del mismo tipo.
Puede declarar una variable de matriz, como números [100] en lugar de declarar directamente 100 variables independientes número0, número1, ...., número99.
Este tutorial le presentará la declaración, creación e inicialización de matrices Java y le proporcionará el código correspondiente.
Las variables de matriz primero deben declararse antes de poder utilizar una matriz en un programa. La siguiente es la sintaxis para declarar variables de matriz:
dataType[]arrayRefVar;//首选的方法或dataTypearrayRefVar[];//效果相同,但不是首选方法
Nota: Se recomienda utilizar el estilo de declaración dataType[] arrayRefVar para declarar variables de matriz. El estilo dataType arrayRefVar[] proviene del lenguaje C/C++ y se adopta en Java para permitir a los programadores de C/C++ comprender rápidamente el lenguaje Java.
Aquí hay ejemplos de código para ambas sintaxis:
double[]myList;//首选的方法或doublemyList[];//效果相同,但不是首选方法
El lenguaje Java utiliza el nuevo operador para crear una matriz. La sintaxis es la siguiente:
arrayRefVar=newdataType[arraySize];
La declaración de sintaxis anterior hace dos cosas:
1. Cree una matriz usando tipo de datos [tamaño de matriz].
2. Asigne la referencia de la matriz recién creada a la variable arrayRefVar.
La declaración de variables de matriz y la creación de la matriz se pueden completar en una sola declaración, como se muestra a continuación:
dataType[]arrayRefVar=newdataType[arraySize];
Además, también puede crear una matriz utilizando el siguiente método.
dataType[]arrayRefVar={value0,value1,...,valuek};
Se accede a los elementos de una matriz por índice. La indexación de matrices comienza en 0, por lo que los valores de índice varían de 0 a arrayRefVar.length-1.
Luego, cuando la matriz abra espacio, podrá operar de la siguiente manera:
Ejemplo: definir una 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]); //通过循环控制索引 } } }
Además de declarar y asignar espacio, la propia matriz tiene otro modo de asignación.
Ejemplo: use el modo paso a paso para abrir espacio en la matriz
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]); //通过循环控制索引 } } }
Pero asegúrese de recordar que las matrices son tipos de datos de referencia, por lo que se debe asignar espacio (crear instancias) antes de usar la matriz. Si se usa una matriz sin espacio asignado, definitivamente aparecerá un mensaje NullPointerException
:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; System.out.println(data[x]); } }
Este principio es exactamente el mismo que se explicó antes.
Definitivamente se utilizarán matrices durante el desarrollo, pero operaciones como las anteriores son raras. En el desarrollo real futuro, el concepto de matriz se usará más y, cuando se usa directamente, en la mayoría de los casos es solo una salida de bucle for.
Se determinan el tipo de elemento de la matriz y el tamaño de la matriz, por lo que cuando procesamos elementos de la matriz, generalmente usamos un bucle básico o un bucle foreach.
Este ejemplo demuestra completamente cómo crear, inicializar y manipular matrices:
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); } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
1.9 2.9 3.4 3.5 Totalis11.7 Maxis3.5
JDK 1.5 introdujo un nuevo tipo de bucle, llamado bucle foreach o bucle mejorado, que itera sobre una matriz sin utilizar subíndices.
El formato de sintaxis es el siguiente:
for(type element: array){ System.out.println(element); }
Este ejemplo se utiliza para mostrar todos los elementos de la matriz myList:
publicclassTestArray{ publicstaticvoidmain(String[]args){ double[]myList={1.9,2.9,3.4,3.5}; //打印所有数组元素for(doubleelement:myList){ System.out.println(element); } } }
Los resultados de compilación y ejecución del ejemplo anterior son los siguientes:
1.9 2.9 3.4 3.5
Las matrices se pueden pasar como parámetros a los métodos. Por ejemplo, el siguiente ejemplo es un método que imprime los elementos en una matriz int.
publicstaticvoidprintArray(int[]array){ for(inti=0;i<array.length;i++){ System.out.print(array[i]+""); } }
El siguiente ejemplo llama al método printArray para imprimir 3, 1, 2, 6, 4 y 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; }
En el ejemplo anterior, la matriz de resultados se utiliza como valor de retorno de la función.
La clase java.util.Arrays puede operar matrices cómodamente y todos los métodos que proporciona son estáticos. Tiene las siguientes funciones:
Asigna un valor al array: mediante el método fill.
Ordenar la matriz: utilice el método de clasificación, en orden ascendente.
Comparar matrices: utilice el método igual para comparar si los valores de los elementos de la matriz son iguales.
Búsqueda de elementos de matriz: el método binarioSearch puede realizar una operación de búsqueda binaria en la matriz ordenada.
Consulte la siguiente tabla para obtener instrucciones específicas:
número de serie | Métodos e instrucciones. |
---|---|
1 | public static int binarioSearch(Object[] a, Object key) utiliza un algoritmo de búsqueda binaria para buscar un objeto con un valor determinado (Byte, Int, double, etc.) en la matriz dada. La matriz debe ordenarse antes de llamar. Si el valor de búsqueda está contenido en una matriz, devuelve el índice de la clave de búsqueda; de lo contrario, devuelve (-( punto de inserción ) - 1). |
2 | public static boolean equals(long[] a, long[] a2) Devuelve verdadero si las dos matrices largas especificadas son iguales entre sí. Dos matrices se consideran iguales si contienen la misma cantidad de elementos y todos los pares de elementos correspondientes en ambas matrices son iguales. En otras palabras, dos matrices son iguales si contienen los mismos elementos en el mismo orden. El mismo enfoque funciona para todos los demás tipos de datos básicos (Byte, short, Int, etc.). |
3 | public static void fill(int[] a, int val) asigna el valor int especificado a cada elemento en el rango especificado de la matriz de tipo int especificada. El mismo enfoque funciona para todos los demás tipos de datos básicos (Byte, short, Int, etc.). |
4 | public static void sort(Object[] a) ordena la matriz de objetos especificada en orden ascendente de acuerdo con el orden natural de sus elementos. El mismo enfoque funciona para todos los demás tipos de datos básicos (Byte, short, Int, etc.). |