uno. Sobre las características de las matrices
1. En Java, hay una verificación de límites si usa matrices o colecciones. Si la operación está fuera de los límites, se obtendrá una RuntimeException.
2. Las matrices solo pueden guardar tipos específicos. Las matrices pueden guardar los tipos de datos nativos, pero las colecciones no pueden. Las colecciones no procesan objetos en tipos específicos. Procesan todos los objetos de acuerdo con el tipo de objeto. Lo que se almacena en la colección es la referencia del objeto en lugar del objeto en sí.
3. La clase de colección solo puede guardar referencias a los objetos. Las matrices se pueden crear para guardar directamente los tipos de datos nativos o para guardar referencias a los objetos. En la colección, puede usar la clase de envoltorio, como entero, doble, etc. para guardar valores de tipo de datos nativos.
Código de ejemplo:
int a = 10; Entero entero = nuevo entero (a); int b = integer.intValue (); System.out.println (a = b);
4. La matriz de objetos y la matriz de tipo de datos nativas están casi lo mismo en uso; La única diferencia es que la matriz de objetos guarda referencias, y la matriz de tipo de datos nativa contiene el valor del tipo de datos nativos.
2. Uso correcto de matrices
Si necesita almacenar una gran cantidad de datos, por ejemplo, si necesita leer 100 números, debe definir 100 variables. Obviamente, no tiene mucho sentido repetir el código 100 veces. ¿Cómo resolver este problema? Java Language proporciona una estructura de datos de matriz (matriz), que es un contenedor que puede almacenar elementos del mismo tipo de datos y puede almacenar 100 números en una matriz. Las matrices serán de gran ayuda en este momento ~
1. Beneficios de las matrices
¿Hay alguna diferencia entre almacenar datos y no almacenar datos? La mayor ventaja de las matrices es que pueden numerar automáticamente todos los elementos almacenados. Tenga en cuenta que el número comienza desde 0. Fácil de operar estos datos.
Por ejemplo, el número de alumno se puede usar para encontrar al estudiante correspondiente.
2. Formato de matriz
Formato 1:
Tipo de elemento [] Nombre de la matriz = nuevo tipo de elemento [número de elementos o longitud de la matriz];
Ejemplo:
int [] arr = new int [5]; arr [0] = 1; arr [1] = 2;
Formato 2:
Tipo de elemento [] Nombre de matriz = nuevo elemento Tipo [] {elemento, elemento, ...};
int [] arr = new int [] {3,5,1,7}; int [] arr = {3,5,1,7};Nota: Al asignar espacio a una matriz, debe especificar el número de elementos que la matriz puede almacenar para determinar el tamaño de la matriz. El tamaño de la matriz no se puede modificar después de crear la matriz. Puede usar el atributo de longitud para obtener el tamaño de la matriz.
3. Declarar variables de matriz
Para usar una matriz, la matriz debe declararse en el programa y se debe especificar el tipo de elemento de la matriz.
= Mitad izquierda:
Primero escriba el lado izquierdo para aclarar que el tipo de elemento es int y el contenedor usa una matriz. Entonces, ¿cómo identificas la matriz? . Luego use un símbolo especial [] entre paréntesis para representarlo. Para usar una matriz, debe darle un nombre a la matriz, por lo que nombramos la matriz X aquí. Luego siga el signo igual.
El código refleja:
int [] x
Nota: Int X [] también es un formato para crear matrices. Se recomienda declarar matrices int [] x.
4. Crea una matriz
= Mitad derecha:
Para usar una nueva palabra clave, llamada nueva. Nuevo se usa para generar una entidad contenedor en la memoria. El almacenamiento de datos requiere espacio. El espacio para almacenar muchos datos se abre con el nuevo operador. nuevo int [3]; Este 3 es el número de elementos. La parte de la derecha define una matriz real en la memoria que puede almacenar 3 elementos.
New int [3] hace dos cosas. Primero, use nuevo int [3] para crear una matriz y luego asigne la referencia a la variable de matriz x.
int [] x=new int[3];
¿Qué tipo es x?
Cualquier variable debe tener su propio tipo de datos. Tenga en cuenta que esta x no es de tipo int. int representa el tipo de elemento en el contenedor. Entonces X es de tipo de matriz.
Una matriz es un tipo de datos separado. Los tipos de datos se dividen en dos escuelas principales, que se dividen en tipos de datos básicos y tipos de datos de referencia. La segunda escuela más grande es el tipo de datos de referencia. Por lo tanto, ahora ha entrado en contacto con uno de los tres tipos de datos referenciados. Es decir, el tipo de matriz [] soportes representan la matriz.
int[] arr = new int[5]; ¿Qué pasa en la memoria?
Cuando se ejecuta cualquier programa, es necesario abrir el espacio en la memoria. Iint [] arr = new int [5]; ¿Cómo se ve este programa en la memoria? Esto implica el espacio abierto por la máquina virtual Java al ejecutar el programa. Entonces, ¿cuánto espacio se abre Java? Continúe aprendiendo la estructura de memoria de Java.
5. Inicialización de la matriz
Método 1: No use el operador nuevo
int [] arr = {1, 2, 3, 4, 5};Método 2: Use el operador nuevo
int [] arr2 = new int [] {1, 2, 3, 4, 5}; int [] arr3 = new int [3]; arr3 [0] = 1; arr3 [1] = 5; arr3 [2] = 6;Si el operador nuevo no se usa en la inicialización de la matriz. Nota: El siguiente método de escritura es incorrecto.
int [] arr; arr = {1,2,3,4,5};En este momento, inicializando la matriz, debe colocar la declaración, la creación y la inicialización en una declaración. Separarlo causará errores de sintaxis.
Entonces solo puedes escribir lo siguiente:
int [] arr = {1,2,3,4,5};6. Traversal de matriz
public static void main (string [] args) {int [] x = {1, 2, 3}; para (int y = 0; y <3; y ++) {system.out.println (x [y]); // system.out.println ("x ["+y+"] ="+x [y]); Efecto de impresión x [0] = 1;} // Entonces esta es la primera operación común de matrices. transversal}Hay un atributo en la matriz que puede obtener el número de elementos en la matriz, es decir, la longitud de la matriz. El nombre de la matriz.
public static void main (string [] args) {int [] x = {1, 2, 3}; para (int y = 0; y <x.length; y ++) {system.out.println (x [y]); // system.out.println ("x ["+y+"] ="+x [y]); Efecto de impresión x [0] = 1;} // Entonces esta es la primera operación común de matrices. transversal}7. Excepciones comunes de matrices
Un marcador de esquina de matriz cruza los límites Excepción: Nota: El marcador de ángulo de la matriz comienza desde 0.
public static void main (string [] args) {int [] x = {1, 2, 3}; system.out.println (x [3]); // java.lang.arrayindoxoutofboundsexception}Excepción del puntero de dos nulos:
public static void main (string [] args) {int [] x = {1, 2, 3}; x = null; system.out.println (x [1]); // java.lang.nullpointerexception}Formación:
Cuándo usar matrices: cuando hay muchos elementos, para facilitar el funcionamiento de estas matrices, primero se realizará almacenamiento temporal, y el contenedor utilizado es una matriz.
Características:
La longitud de la matriz es fija.
8. Operaciones comunes de matrices
1: Caso:
Una matriz elimina el valor máximo
/*Defina una función para obtener el valor máximo:
1. Determine el resultado: Tipo de valor de retorno int
2. Contenido desconocido: el valor máximo del que no se determina la matriz, entonces la matriz no se determina.
Ideas:
1. Defina una variable y registre los elementos más grandes de la matriz.
2. Iterer a través de toda la matriz y comparar cada elemento de la matriz con la variable.
3. Cuando una variable encuentre un elemento más grande que él, deje que la variable registre el valor del elemento. Cuando termina el bucle, se genera el valor máximo.
*/public static int getMax (int [] arr) {// Defina la variable para registrar un valor mayor e inicializarlo en cualquier elemento en la matriz. int max = arr [0]; for (int x = 1; x <arr.length; x ++) {if (arr [x]> max) max = arr [x];} return max;}Dos: clasificación directa
Caso 2: Matrices de clasificación usando el orden directo:
/*
Seleccione el orden.
Compare los elementos con una esquina con otros elementos.
En el primer extremo del bucle interno, el mayor valor aparece en la posición del ángulo de la cabeza.
*/public static void selectSort (int [] arr) {for (int x = 0; x <arr.length-1; x ++) {for (int y = x+1; y <arr.length; y ++) // ¿Por qué es el valor de inicialización de y x+1? Porque cada vez que se compara, // se compara con el siguiente elemento marcado en la esquina X. {if (arr [x]> arr [y]) {int temp = arr [x]; arr [x] = arr [y]; arr [y] = temp;}}}}Tres: clasificación de burbujas
/*Clasificación burbujeante. Método de comparación: compare dos elementos adyacentes. Si se cumplen las condiciones, se realizará el reemplazo de posición. Principio: El bucle interno termina una vez, y el mayor valor aparece en la posición de la esquina de la cola. */public static void bubblesort (int [] arr) {for (int x = 0; x <arr.length-1; x ++) {for (int y = 0; y <arr.length-x-1; y ++) //-x: deje que la metadeductancia de cada participación en la comparación. //-1: Evite las marcas de esquina que cruzan los límites. {if (arr [y]> arr [y+1]) {int temp = arr [y]; arr [y] = arr [y+1]; arr [y+1] = temp;}}}Cuatro: búsqueda media placa (método de doble partícula)
/*Para mejorar la eficiencia de búsqueda, puede usar el método de búsqueda de medio fin. Nota: Esta búsqueda solo es válida para matrices ordenadas. Este método también se ha convertido en un método de búsqueda binaria. */public static int halfseach (int [] arr, int key) {int min, mid, max; min = 0; max = arr.length -1; mid = (max + min)/2; while (arr [mid]! = key) {if (key> arr [mid]) min = mid + 1; else if (key <arr [mid]) max = mid -1; if (min> max) regreso; (máx+min)/2;} return Mid;}Cinco: Flip de matriz
/*La inversión es en realidad el reemplazo posicional de los elementos de las marcas de la esquina de la cabeza y la cola, y luego las marcas de la esquina de la cabeza aumentan automáticamente. La marca de la esquina de la cola está autodecrecida. Cuando la marca del ángulo de la cabeza es <marca de ángulo de cola, se puede realizar la acción de sustitución. */public static void reverseArray (int [] arr) {for (int start = 0, end = arr.length-1; start <end; start ++, end-) {swap (arr, start, end);}} // realizar desplazamiento posicional de elementos de la matriz. public static void swap (int [] arr, int a, int b) {int temp = arr [a]; arr [a] = arr [b]; arr [b] = temp;}11. Matriz bidimensional
Uso de matrices
Explicación detallada de las matrices Java
transversal: toString () Devuelve los elementos de la matriz como una cadena
Sort: sort () ordene la matriz en orden ascendente
Search: BinarySearch () busca el elemento especificado en la matriz especificada, devuelve el índice del elemento. Si no se encuentra ningún retorno (-sinter Point-1) Nota: Cuando se usa la función de búsqueda, la matriz debe ordenarse primero.
Matriz bidimensional:
De fumar:
No tengo dinero para comprar 1 variable
Un poco de dinero es un paquete de una matriz unidimensional 20 variables
Muy rico 10 paquetes (matriz bidimensional) matriz 2d
Matriz bidimensional: en esencia, el almacenamiento es una matriz unidimensional.
Definición de matriz:
Tipo de matriz [] [] Nombre de matriz = nuevo Tipo de matriz [Número de matriz unidimensional] [Número de elementos en cada matriz unidimensional];
Explicación detallada de las matrices Java
Pregunta: ¿Por qué a.length = 3, a [0] .length = 4?
Explicación detallada de las matrices Java
Inicialización de la matriz:
Inicialización estática:
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
Inicialización dinámica:
Explicación detallada de las matrices Java
Operaciones comunes para matrices bidimensionales:
1. Traverse una matriz bidimensional
2. Resumir matrices bidimensionales
clase Demo3 {// Definir una función funcional que atraviesa una matriz bidimensional public static void printarr2 (int [] [] a) {// 1. Desmonear la matriz bidimensional para (int i = 0; i <a.length; i ++) {// 2. desorden la matriz one-dimensional a obtener datos para (int j = 0; j.m; j.i. j ++) {system.out.print (a [i] [j]+","); }}} // Definir una función para calcular la suma de acumulación de elementos en una matriz bidimensional pública long thetsum (int [] [] a) {// 0. Defina una variable de resultado larga sum = 0l; // 1. Desmongar la matriz bidimensional para (int i = 0; i <a.length; i ++) {// 2. Desmontar la matriz unidimensional para obtener datos para (int j = 0; j <a [i] .length; j ++) {sum+= a [i] [j]; }} suma de retorno;} // Estadísticas El número de elementos en una matriz bidimensional public static int getDataCount (int [] [] a) {// 0. Registre el número de elementos int count = 0; // 1. Desmonear la matriz bidimensional para (int i = 0; i <a.length; i ++) {// 2. Desmontar la matriz unidimensional para obtener datos para (int j = 0; j <a [i] .length; j ++) {Count ++; }} return count;} public static void main (string [] args) {int [] [] a = new int [] [] {{23,4,5}, {2}, {4,5,78,56,90}}; printarr2 (a); System.out.println (); System.out.println ("La suma acumulada es:"+getSum (a)); system.out.println ("Número estadístico de elementos:"+getDataCount (a)); system.out.println ("¡Hello World!");}}}Los anteriores son todos los temas sobre las matrices Java. Como puede ver, las matrices Java son una estructura de datos muy poderosa.