Ejemplos de Java sobre cómo trabajar con matrices. Matrices en Java: definición y creación, inicialización y llenado

Una matriz es una secuencia finita de elementos ordenados del mismo tipo, a cada elemento se accede mediante su índice.

El tamaño o longitud de una matriz es el número total de elementos de la matriz. El tamaño de la matriz se establece cuando se crea la matriz y no se puede cambiar más adelante, es decir, no puede eliminar elementos de la matriz ni agregarlos allí, pero puede asignar nuevos valores a los elementos existentes.

El índice del elemento inicial es 0, el siguiente es 1, etc. El índice del último elemento de la matriz es uno menos que el tamaño de la matriz.

En Java, las matrices son objetos. Esto significa que el nombre dado a cada matriz solo indica la dirección de algún dato en la memoria. No se almacena nada en esta variable excepto la dirección. El índice de la matriz, de hecho, indica cuánto necesita alejarse del elemento inicial de la matriz en la memoria para llegar al elemento deseado.

Para crear una matriz, debe declararle un nombre adecuado y luego asociar con este nombre el fragmento de memoria deseado, donde se almacenarán los valores de los elementos de la matriz uno tras otro. Las siguientes opciones para declarar una matriz. son posibles: escriba el nombre; escriba el nombre;

Dónde tipo es el tipo de elementos de la matriz, y Nombre- un identificador único (no ocupado por otras variables u objetos en esta parte del programa) que comienza con una letra.

Ejemplos: int a; doble ar1; doble ar2;

En el ejemplo, declaramos nombres para tres matrices. con nombre a se puede asociar aún más una serie de elementos de tipo int y con nombres ar1 Y ar2 Además, se pueden conectar matrices de números reales (tipo doble). Hasta ahora no hemos creado matrices, solo hemos preparado nombres para ellas.

Ahora puedes crear (o, como dicen, inicializar) matrices de la siguiente manera: a = new int; // array de 10 elementos de tipo int int n = 5; ar1 = nuevo doble[n]; // Matriz de 5 elementos double ar2 = (3.14, 2.71, 0, -2.5, 99.123); // Una matriz de 6 elementos de tipo double Es decir, al crear una matriz, podemos especificar su tamaño, o enumerar inmediatamente todos los elementos deseados separados por comas entre llaves (en este caso, el tamaño se calculará automáticamente en función de la secuencia de elementos que se especificarán). Tenga en cuenta que en este caso, se coloca un punto y coma después de la llave de cierre, lo que no ocurre cuando la llave cierra un bloque.

Si la matriz se creó usando el operador nuevo, entonces cada uno de sus elementos recibe un valor predeterminado. Lo que será se determina en función del tipo de datos (0 para int, 0.0 para double, etc.).

Era posible declarar un nombre para una matriz y crear la matriz en una línea usando el siguiente esquema: tipo nombre = nuevo tipo[tamaño]; escriba nombre = (el0, el1, ..., elN);

Ejemplos: int mas1 = (10,20,30); int mas2 = nuevo int;

Para acceder a uno de los elementos de la matriz para leer o cambiar su valor, debe especificar el nombre de la matriz seguido del índice del elemento entre corchetes. Un elemento de matriz con un índice específico se comporta igual que una variable. Por ejemplo, para mostrar el último elemento del array mas1, debemos escribir en el programa:

System.out.println("Último elemento de la matriz " + mas1);

Y así es como podemos poner en el array mas2 el mismo conjunto de valores que están almacenados en mas1:

Más2 = 10; mas2 = 20; mas2 = 30;Ya en este ejemplo queda claro que para acceder a todos los elementos del array, tenemos que repetir el mismo tipo de acciones. Como recordarás, los bucles se utilizan para repetir operaciones muchas veces. En consecuencia, podríamos llenar la matriz con los elementos necesarios usando un bucle: for(int i=0; iEstá claro que si tuviéramos una matriz no de 3, sino de 100 elementos, simplemente no habríamos podido hacerlo. sin bucle.

No es necesario recordar la longitud de cualquier matriz creada, porque hay una propiedad que la almacena. Puede acceder a esta propiedad agregando .length al nombre de la matriz. Por ejemplo:

Int razmer = mas1.longitud;

Esta propiedad no se puede modificar (es decir, no se le puede asignar nada), sólo se puede leer. Con esta propiedad, puede escribir código de programa para procesar una matriz sin siquiera conocer su tamaño específico.<= ar2.length - 1; i++) { System.out.print(ar2[i] + " "); } Для краткости удобнее менять нестрогое неравенство на строгое, тогда не нужно будет вычитать единицу из размера массива. Давайте заполним массив целыми числами от 0 до 9 и выведем его на экран: for(int i = 0; i < ar1.length; i++) {ar1[i] = Math.floor(Math.random() * 10); System.out.print(ar1[i] + " "); }

Tenga en cuenta que en cada paso del ciclo, primero enviamos un valor aleatorio al elemento de la matriz con el índice i-ésimo y luego mostramos el mismo elemento en la pantalla. Pero los dos procesos (llenado y retirada) podrían realizarse en ciclos diferentes. Por ejemplo:

Esta propiedad no se puede modificar (es decir, no se le puede asignar nada), sólo se puede leer. Con esta propiedad, puede escribir código de programa para procesar una matriz sin siquiera conocer su tamaño específico.< ar1.length; i++) { ar1[i] = Math.floor(Math.random() * 9); } for(int i = 0; i < ar1.length; i++) { System.out.print(ar1[i] + " "); } В данном случае более рационален первый способ (один проход по массиву вместо двух), но не всегда возможно выполнить требуемые действия в одном цикле.

Para procesar arrays siempre se utilizan bucles del tipo “n veces” (for) porque sabemos de antemano cuántas veces debe repetirse el bucle (la misma cantidad de veces que elementos hay en el array).

Tareas

    Cree una matriz de todos los números pares del 2 al 20 y muestre los elementos de la matriz primero en una línea, separando un elemento de otro con un espacio, y luego en una columna (separando un elemento de otro comenzando una nueva línea). Antes de crear una matriz, piense en su tamaño.

    2 4 6 … 18 20
    2
    4
    6

    20

    Cree una matriz de todos los números impares del 1 al 99, muéstrela en la pantalla como una línea y luego muestre la misma matriz en la pantalla como una línea, pero en orden inverso (99 97 95 93 ... 7 5 3 1 ).

    Crea una matriz de 15 enteros aleatorios a partir del segmento. Muestre la matriz en la pantalla. Cuente cuántos elementos pares hay en la matriz y muestre este número en la pantalla en una línea separada.

    Crea una matriz de 8 enteros aleatorios a partir del segmento. Imprima la matriz en la pantalla como una cadena. Reemplace cada elemento con un índice impar con cero. Nuevamente, muestre la matriz en una línea separada.

    Cree 2 matrices de 5 enteros aleatorios a partir de un segmento cada una, muestre las matrices en la pantalla en dos líneas separadas. Calcule la media aritmética de los elementos de cada conjunto e informe para cuál de los conjuntos este valor fue mayor (o informe que sus medias aritméticas son iguales).

    Cree una matriz de 4 números enteros aleatorios a partir del segmento, imprímala en la pantalla como una cadena. Determine y muestre un mensaje que indique si la matriz es una secuencia estrictamente creciente.

    Cree una matriz de los 20 números principales de Fibonacci y muéstrela en la pantalla. Te recordamos que el primer y segundo término de la secuencia son iguales a unos, y cada uno de los siguientes es la suma de los dos anteriores.

    Cree una matriz de 12 enteros aleatorios a partir del segmento [-15;15]. Determine qué elemento es el máximo en esta matriz e informe el índice de su última aparición en la matriz.

    Crea dos matrices de 10 números enteros aleatorios del segmento y una tercera matriz de 10 números reales. Cada elemento con el índice i-ésimo de la tercera matriz debe ser igual a la relación entre el elemento de la primera matriz con el índice i-ésimo y el elemento de la segunda matriz con el índice i-ésimo. Imprima las tres matrices en la pantalla (cada una en una línea separada), luego imprima el número de elementos enteros en la tercera matriz.

    Cree una matriz de 11 números enteros aleatorios a partir del segmento [-1;1] y muestre la matriz como una línea. Determine qué elemento aparece con más frecuencia en la matriz y muestre un mensaje al respecto en la pantalla. Si dos elementos aparecen la misma cantidad de veces, no genere nada.

    El usuario debe especificar un número par positivo desde el teclado y el programa debe crear una matriz del tamaño especificado a partir de enteros aleatorios de [-5;5] y mostrarla en la pantalla como una línea. Luego de esto, el programa debe determinar e informar al usuario acerca de la suma de los módulos cuya mitad del arreglo es mayor: la izquierda o la derecha, o informar que estas sumas de los módulos son iguales. Si el usuario ingresa un número incorrecto, el programa debería requerir que se repita el ingreso hasta que se especifique el valor correcto.

    El programa debe crear una matriz de 12 números enteros aleatorios a partir del segmento [-10;10] para que haya el mismo número de elementos negativos y positivos y sin ceros. En este caso, el orden de los elementos debe ser aleatorio (es decir, la opción no es adecuada cuando la matriz contiene constantemente primero 6 números positivos y luego 6 negativos, o cuando los elementos se alternan constantemente en uno, etc.). Muestre la matriz resultante en la pantalla.

    El usuario ingresa un número natural mayor que 3 desde el teclado, el cual se almacena en la variable n. Si el usuario ingresó un número incorrecto, el programa debería pedirle que repita la entrada. Cree una matriz de n enteros aleatorios a partir de un segmento y muéstrela en la pantalla. Cree una segunda matriz solo a partir de los elementos pares de la primera matriz, si corresponde, y muéstrela en la pantalla.

Ordenar una matriz

Ordenar es el proceso de reorganizar los elementos de una matriz, cuando todos sus elementos están ordenados en orden ascendente o descendente. Puede ordenar no solo matrices numéricas, sino también, por ejemplo, matrices de cadenas (según el mismo principio que se organizan los libros). estantes de la biblioteca). En general, puede ordenar los elementos de cualquier conjunto donde se especifica la relación de orden. Existen algoritmos universales que realizan la clasificación independientemente de cuál sea el estado inicial de la matriz. Pero además de ellos, existen algoritmos especiales que, por ejemplo, pueden ordenar muy rápidamente una matriz casi ordenada, pero no se adaptan bien a una matriz muy mixta (o no se adaptan en absoluto). Se necesitan algoritmos especiales cuando la velocidad es importante y se está resolviendo un problema específico, su estudio detallado está fuera del alcance de nuestro curso.

Ordenar por selección

Veamos un ejemplo de clasificación en orden ascendente. Es decir, la posición inicial en la matriz debe tener el elemento mínimo, la siguiente debe tener un elemento mayor o igual, etc., y la última posición debe tener el elemento más grande. La esencia del algoritmo es la siguiente. Buscamos el elemento mínimo en todo y lo cambiamos por el inicial. Luego, en la parte restante de la matriz (es decir, entre todos los elementos excepto el inicial), buscamos nuevamente el elemento mínimo y lo intercambiamos con el segundo elemento de la matriz. Etcétera.

Ilustración:

Para (int i = 0; i

clasificación de burbujas

La esencia del algoritmo es esta. Si recorremos cualquier matriz, estableciendo el orden correcto en cada par de elementos adyacentes, luego de ese paso se garantizará que el elemento deseado esté en el último lugar de la matriz (el más grande para ordenar en orden ascendente o el más pequeño para ordenar en orden descendente). Si recorre la matriz nuevamente con las mismas transformaciones, se garantiza que el elemento deseado estará en el penúltimo lugar. Y así sucesivamente.

2 9 1 4 3 5 2 → el orden es correcto, no habrá reordenamiento

2 9 1 4 3 5 2 → 2 1 9 4 3 5 2

2 1 9 4 3 5 2 → 2 1 4 9 3 5 2

2 1 4 9 3 5 2 → 2 1 4 3 9 5 2

2 1 4 3 9 5 2 → 2 1 4 3 5 9 2

2 1 4 3 5 9 2 → 2 1 4 3 5 2 9

Código: /* El bucle externo reduce constantemente el fragmento de la matriz * que será considerado, porque después de cada paso * del bucle interno, el elemento deseado estará * en el último lugar del fragmento (no es necesario ser considerado nuevamente).

*/ for (int i = a.length - 1; i >= 2; i--) ( /* En la variable ordenada almacenaremos un signo de si la matriz * está ordenada. Antes de cada paso del bucle interno * asumiremos que está ordenado, pero si hacemos * al menos una permutación, entonces aún no está completamente ordenado * Esta técnica, que simplifica la clasificación, se llama criterio de Iverson */ booleano ordenado = verdadero /* En el; bucle interno, recorremos el fragmento de matriz, que está * determinado por el bucle externo . En este fragmento establecemos * el orden correcto entre elementos adyacentes, por lo que en pares * procesamos todo el fragmento */ for (int j = 0; j a) ( int temp = a[j]; a[j] = a; a = temp. ; sorted = false; ) ) /* Si la matriz está ordenada (es decir, no hubo permutaciones * en el bucle interno, entonces puede detener el bucle externo * */ if(sorted) ( break; ) ).

matrices multidimensionales

Una matriz puede constar no solo de elementos de algún tipo incorporado (int, double, etc.), sino también, entre otras cosas, de objetos de alguna clase existente e incluso de otras matrices.

Una matriz que contiene otras matrices como elementos se denomina matriz multidimensional y es la más utilizada. Estas matrices se pueden representar fácilmente como una matriz. Cada fila es una matriz unidimensional ordinaria, y la unión de todas las filas es una matriz bidimensional, en cada elemento del cual se almacena un enlace a alguna fila de la matriz. imaginado como un conjunto de matrices, cada una de las cuales escribimos en una tarjeta de biblioteca. Luego, para llegar a un número específico, primero debe indicar el número de la tarjeta (el primer índice de la matriz tridimensional), por lo tanto indique el número de fila (el segundo índice de la matriz) y solo luego el número del elemento en la fila (el tercer índice).

Las matrices se declaran así: int d1; // Ordinario, unidimensional int d2; //Doble bidimensional d3; // Tridimensional int d5; // Cinco dimensiones Al crear una matriz, puede especificar explícitamente el tamaño de cada nivel: d2 = int; // Matriz de 3 filas y 4 columnas Pero solo puedes especificar el tamaño del primer nivel: int dd2 = int; /* Matriz de 5 filas. Aún no se sabe cuántos elementos habrá en cada línea. */ En este último caso, puedes crear una matriz bidimensional, que no será una matriz debido a que cada fila tendrá un número diferente de elementos. Por ejemplo: para(int i=0; i<5; i++) { dd2[i] = new int; } В результате получим такой вот массив: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Мы могли создать массив явно указав его элементы. Например так: int ddd2 = {{1,2}, {1,2,3,4,5}, {1,2,3}};

En este caso, puedes acceder al elemento con índice 4 en la segunda fila. ddd2, pero si accedemos al elemento ddd2 o ddd2- Se producirá un error, ya que simplemente no existen tales elementos. Además, este error ocurrirá durante la ejecución del programa (es decir, el compilador no lo verá).

Normalmente, se utilizan matrices bidimensionales con el mismo número de elementos en cada fila. Para procesar matrices bidimensionales, se utilizan dos bucles anidados con diferentes contadores. Ejemplo (llenamos una matriz bidimensional con números aleatorios del 0 al 9). y mostrarlo en pantalla en forma de matriz): int da = new int; para(int i=0; i

Tareas

    Cree una matriz bidimensional de 8 filas de 5 columnas cada una de números enteros aleatorios del segmento. Muestra la matriz en la pantalla.

    Cree una matriz bidimensional de 5 filas con 8 columnas cada una de enteros aleatorios del segmento [-99;99]. Muestra la matriz en la pantalla.

    Luego, en una línea separada, muestre el valor del elemento máximo de esta matriz (su índice no importa).

    Cree una matriz bidimensional de 7 filas con 4 columnas cada una de enteros aleatorios del segmento [-5;5].

    Para poner a prueba el conocimiento residual de los estudiantes después de las vacaciones de verano, la maestra de primaria decidió comenzar cada lección preguntando a cada estudiante un ejemplo de la tabla de multiplicar, pero hay 15 personas en la clase y los ejemplos entre ellos no deben repetirse. . Para ayudar al profesor, escriba un programa que muestre 15 ejemplos aleatorios de la tabla de multiplicar (de 2*2 a 9*9, porque las tareas de multiplicación por 1 y 10 son demasiado simples). Además, entre los 15 ejemplos no debe haber ejemplos repetidos (los ejemplos 2*3 y 3*2 y pares similares deben considerarse repetidos).

2010, Alexey Nikolaevich Kostin. Departamento de TIDM, Facultad de Matemáticas, Universidad Pedagógica Estatal de Moscú.

Una matriz es una herramienta poderosa que le permite trabajar con grandes cantidades de datos. Obviamente, si necesita almacenar, por ejemplo, 100 valores en algún lugar mientras se ejecuta el código, entonces crear la misma cantidad de variables para esto es al menos irrazonable. Una matriz le permite almacenar una gran cantidad de valores bajo un nombre y acceder a ellos utilizando el índice apropiado. El concepto de matrices es la piedra angular del aprendizaje de Java para principiantes. Después de todo, son la base de muchas estructuras de datos.

Dado que Java es principalmente programación orientada a objetos, tiene una característica distintiva en comparación con las matrices en otros lenguajes de programación: se representan como objetos. Entre otros beneficios, esto elimina la necesidad de monitorear la limpieza de la memoria, ya que esta se libera automáticamente.

Crear y manipular matrices unidimensionales.

Una matriz unidimensional es clásica y es una colección de elementos asociados con un nombre común, cada uno de los cuales corresponde a un índice específico. El método para declarar una matriz se muestra en la siguiente figura.

Primero, se declara el tipo de matriz Java, que define el tipo de valores almacenados en ella. Puede ser cualquier cosa válida en Luego viene el nombre de la matriz y los corchetes le indican al compilador que esta variable es una matriz. Tenga en cuenta un hecho importante. se puede colocar después del tipo base de la matriz o después del nombre de la matriz. Después del signo igual se indica el nuevo operador, que inicia la asignación de memoria para el array (igual que en el caso de los objetos), el tipo de elementos que se almacenarán en él (debe ser compatible con el tipo base declarado anteriormente), y, finalmente, su número , indicado entre corchetes.

La numeración de elementos en una matriz Java comienza desde 0. Por lo tanto, el índice del primer elemento de esta matriz será 0 y el sexto será 5. Para referirse a un elemento específico de la matriz, por ejemplo, el quinto, simplemente indique el nombre de la matriz y el índice del elemento entre corchetes al lado del nombre. De esta manera puedes asignar un valor a un elemento y recuperarlo. Sin embargo, debes tener cuidado porque si pasas un índice en el que el elemento no existe, se producirá un error.

Matrices multidimensionales en Java

Las matrices multidimensionales son filas de matrices unidimensionales a las que hacen referencia elementos de otras matrices. En otras palabras, los más simples son bidimensionales. Usando su ejemplo, intentaremos comprender el concepto. Para mayor claridad, la siguiente figura muestra la sintaxis y el diagrama que describe la estructura de una matriz bidimensional.

Como puede ver, la sintaxis no es muy diferente de las matrices unidimensionales. Veamos la estructura. En los primeros corchetes hemos asignado espacio para 5 elementos. Estos elementos no son más que referencias a matrices individuales. Además, el tamaño de cada uno de ellos está determinado por el número que figura en el segundo paréntesis. De hecho, el análogo de las matrices bidimensionales en matemáticas son las matrices. Tenga en cuenta que, además de los elementos, se asigna un lugar separado en la memoria donde se almacena el valor de longitud de la matriz (longitud). Normalmente, trabajar con matrices multidimensionales se realiza mediante bucles for anidados.

matrices irregulares

Una matriz bidimensional es una matriz de matrices. Esto ya lo hemos descubierto. Pero, ¿pueden las matrices que contiene tener diferentes longitudes? La respuesta es sí, pueden. Para hacer esto, Java brinda la capacidad de declarar una matriz bidimensional de una manera especial. Por ejemplo, queremos crear una matriz bidimensional que almacene tres matrices unidimensionales de longitud 2, 3 y 4, respectivamente. Se declara de la siguiente manera:

intarr = nuevoint;

Tenga en cuenta que no incluimos un número en el segundo paréntesis. La determinación del tamaño de las matrices en arr se hace así:

Al acceder al elemento en el índice 0, que apunta a la primera matriz, declaramos que es de dimensión 2. El elemento en el índice 1 almacenará una matriz de dimensión 3, y así sucesivamente. Es bastante simple.

Sintaxis alternativa de declaración de matriz de Java

También puede inicializar matrices directamente al crearlas. Es bastante simple.

Preste atención a la declaración de las matrices jerseyNumber y playerName.

En el caso de matrices bidimensionales, esta declaración se ve así:

Para hacer esto, en lugar del nuevo operador, se abren llaves, en las que se enumeran todos los elementos separados por comas. En este caso, Java les asigna memoria automáticamente y los indexa en consecuencia.

Matrices de clases auxiliares

Para trabajar con entidades como matrices en Java, el paquete java.util tiene una clase Arrays especial que proporciona muchos métodos estáticos que facilitan mucho el trabajo con ellas. La lista de métodos principales se presenta en la siguiente figura.

Veamos algunos de los métodos de matriz de Java más útiles:

CopyOf (matriz, longitud): devuelve una copia de la matriz pasada de la longitud correspondiente. Si la longitud pasada es mayor que la matriz original, entonces todos los elementos "extra" se completan con un valor predeterminado (0 si es un tipo simple y nulo si es un tipo de referencia).

CopyOfRange(matriz, primer índice, último índice): no se muestra en la imagen, pero es un método útil. Copia la porción de la matriz pasada, definida por los índices correspondientes, comenzando con el primero y terminando con el último.

Ordenar (matriz): ordena los elementos de la matriz en orden ascendente.

Rellenar (matriz, valor): rellena la matriz pasada con el valor apropiado.

BinarySearch (matriz, valor): devuelve el índice en el que se encuentra el elemento con el valor correspondiente en la matriz ordenada pasada. Si no existe tal elemento, se devuelve un número negativo.

Dado que los métodos son estáticos, llamarlos no requiere crear una instancia de la clase Arrays. Se llaman directamente desde él: Arrays.sort(arr).

Conclusión

Hemos cubierto los aspectos más importantes relacionados con las matrices, y para aquellos que recién comienzan a aprender Java para principiantes, esto será suficiente para una comprensión básica de una entidad como una matriz y las técnicas básicas para trabajar con ella. Por supuesto, la práctica le permitirá comprender mejor cómo funciona esta herramienta. Así que tómate el tiempo para hacer algunos ejercicios manipulando matrices de diferentes maneras.

La clase auxiliar Array Java ya se utiliza en condiciones de “combate”, por lo que primero se recomienda aprender a realizar todas las operaciones básicas con matrices manualmente.

¿Qué es una matriz?

Una matriz en Java es una colección de elementos del mismo tipo a los que se puede acceder mediante índice.

Los elementos de una matriz en Java se ubican uno tras otro en la memoria de la computadora. A continuación se muestra un ejemplo de una matriz en Java.

Declarar una matriz en Java

Declaremos una matriz para almacenar elementos de tipo int:

Aquí se declara la variable arr, que es una matriz. Para utilizar esta variable es necesario definirla.

Definición de matriz en Java

Para definir una matriz en Java, debe especificar su longitud, es decir Número de elementos que se pueden almacenar en él:

Nuestra matriz almacenará 5 elementos.

Una matriz es una colección de elementos. Se puede hacer referencia a cada elemento de la matriz por su número. El número suele denominarse índice. La numeración de elementos de una matriz en Java comienza desde cero.

¿Cómo cargar elementos en una matriz?

Asignemos un valor al primer elemento de la matriz, y el primer elemento tiene índice cero:

Asignemos un valor al segundo elemento de la matriz, y el segundo elemento tiene índice uno:

para(int posada = 0; posada< 5; inn++)
{
arr = posada;
}

Al declarar una matriz, puede cargar valores inmediatamente en ella:

int arreglo = (0, 1, 2, 3, 4);

el número de elementos aquí es 5, es decir No es necesario especificar el número de elementos, se determinará automáticamente.

¿Cómo obtener elementos de una matriz?

Se puede hacer referencia a cada elemento de la matriz por su número. Para obtener un elemento de la matriz, debe especificar el nombre de la matriz y el índice del elemento:

Este es el primer elemento de la matriz, porque el primer elemento tiene índice cero.

Asignemos el valor del tercer elemento del array a la variable int a:

Generemos todos los elementos de la matriz en un bucle (repetiremos sobre la matriz):

Para(int posada = 0; posada< 5; inn++) { System.out.println("arr[" + inn + "] = " + arr); }

Una versión simplificada del bucle para generar una matriz es la siguiente:

For(int posada: arr) ( System.out.println("arr[" + posada + "] = " + arr); )

¿Cómo eliminar una matriz en Java?

Puedes eliminar una matriz en Java de esta manera:

¿Cómo obtener la longitud de una matriz en Java?

Obtenemos la longitud de una matriz en Java de esta manera:

int arrLength = arr.length;

¿Cómo obtener el primer elemento de una matriz en Java?

int primerElem = arr;

¿Cómo obtener el penúltimo elemento de una matriz en Java?

int últimoElem = arr;

¿Cómo definir una matriz de longitud variable en Java?

¿Cómo definir una matriz de longitud variable en Java? De ninguna manera. Cuando define una matriz, establece su longitud; no se puede cambiar más adelante. En tales casos se utilizan colecciones, por ejemplo: Vector, ArrayList, etc.

Entonces, la longitud de la matriz no puede ser variable. Pero puedes usar una variable al definir una matriz. En ese caso:

int cd;
int ab = nuevo int;//Error.

luego obtenemos un error: la longitud de la matriz no puede ser una variable.

Necesita configurar el valor del cd:

int cd = 10;
int ab = nuevo int;

Está bien ahora. Si cambia la variable cd después de definir la matriz, esto no afectará la matriz, es decir. su longitud no cambiará. Ejemplo:

Int cd = 10; int ab = nuevo int; cd = 12;// Esto es posible arrLength = ab.length; System.out.println("ab longitud de matriz = " + arrLength); //Salidas: ab array length = 10 ab=4;// Y aquí está el error

Obtenemos un error:

Excepción en el hilo "principal" java.lang.ArrayIndexOutOfBoundsException: 11

El índice máximo de nuestra matriz es 9. Cambiar el valor de la variable cd no afecta la matriz, porque ya está definida y su longitud es constante.

Se pueden utilizar variables para acceder a los elementos de la matriz:

Var.int = 1;
int elem = arreglo;
var = 2;
elem = llegada;

Matriz de caracteres en Java

Un ejemplo de una matriz de caracteres en Java y su salida:

Char charArr = ("S", "B", "P"); para(int posada = 0; posada< charArr.length; inn++) { System.out.println("charArr[" + inn + "] = " + charArr); }

¿Cómo llenar una matriz en Java?

Puede llenar una matriz utilizando el método de relleno estático.


Estudiar para ser "Game Developer" + empleo

matrices de Java

Una matriz es una estructura de datos que almacena valores del mismo tipo. Se accede a un elemento de matriz individual mediante un índice entero. Por ejemplo, si a es una matriz de números enteros, entonces el valor de la expresión a[i] es igual al i-ésimo entero de la matriz.

Una matriz se declara de la siguiente manera: primero se indica el tipo de matriz, es decir, el tipo de elementos contenidos en la matriz, seguido de un par de corchetes vacíos y luego el nombre de la variable. Por ejemplo, aquí se explica cómo declarar una matriz que consta de números enteros:
ent a;

Sin embargo, esta declaración sólo declara la variable a, sin inicializarla con una matriz real. Para crear una matriz, debe utilizar el nuevo operador.

Este operador crea una matriz de 100 números enteros. Los elementos de esta matriz están numerados del 0 al 99 (no del 1 al 100). Una vez creada, la matriz se puede completar, por ejemplo, mediante un bucle.

int a = nuevo int;
para (int i = 0; i< 100; i++)
a[yo] = yo; // Llena la matriz con números del 0 al 99.

Si intenta acceder al elemento a (o cualquier otro elemento cuyo índice esté fuera del rango de 0 a 99) creando una matriz de 100 elementos, el programa terminará porque se producirá una excepción de índice de matriz fuera de límites.
Para contar la cantidad de elementos en una matriz, use el método nameMass.
va.longitud.

Por ejemplo,

para (int i = 0; i< a. length; i++ System.out.println (a[i]);

Una vez creada una matriz, es imposible cambiar su tamaño (aunque, por supuesto, puedes cambiar sus elementos individuales). Si necesita cambiar el tamaño de una matriz con frecuencia durante la ejecución del programa, es mejor utilizar otra estructura de datos llamada lista de matrices.

Una matriz se puede declarar de dos maneras:

ent a;
o
ent a;

La mayoría de los programadores de Java prefieren el primer estilo porque separa más claramente el tipo de matriz int del nombre de la variable.

Inicializadores de matrices y matrices sin nombre

Java tiene una función para crear una matriz e inicializarla simultáneamente. A continuación se muestra un ejemplo de dicha estructura sintáctica:

int números primos pequeños = (2, 3, 5, 7, 11, 13);

Tenga en cuenta que en este caso no es necesario utilizar el nuevo operador. Además, incluso puedes inicializar una matriz sin nombre:

nuevo entero (16, 19, 23, 29, 31, 37)

Esta expresión asigna memoria para una nueva matriz y la llena con los números especificados entre llaves. En este caso, se calcula su número y, en consecuencia, se determina el tamaño de la matriz. Esta construcción sintáctica es conveniente para reinicializar una matriz sin crear una nueva variable. Por ejemplo, la expresión

pequeñosPrimes = nuevo int( 17, 19, 23, 29, 31, 37 );
es una expresión abreviada
int anónimo = (17, 19, 23, 29, 31, 37);
smailPrimes = anónimo;

Puede crear una matriz de tamaño cero. Una matriz de este tipo puede resultar útil al escribir un método que evalúe una matriz que resulta estar vacía. Una matriz de longitud cero se declara de la siguiente manera:

nuevo tipo de elemento

Tenga en cuenta que dicha matriz no es equivalente a un objeto nulo.

Copiando matrices

Una matriz se puede copiar a otra, pero ambas variables harán referencia a la misma matriz.

int númerosafortunados = smailPrimes;
números afortunados = 12; // Ahora el elemento smailPrimes también es 12.

El resultado se muestra en la Fig. 3.14. Si necesita copiar todos los elementos de una matriz a otra, debe usar el método arraycopy de la clase System. Su llamada se ve así:

System.arraycopy(desde, desdelndex, hasta, tolndex, contar);

La matriz to debe ser lo suficientemente grande como para contener todos los elementos que se van a copiar.

Arroz. 3.14. Copiando una matriz

Por ejemplo, los operadores que se muestran a continuación, cuyos resultados se muestran en la Fig. 3.15, cree dos matrices y luego copie los últimos cuatro elementos de la primera matriz en la segunda. La copia comienza desde la segunda posición en la matriz de origen y los elementos copiados se colocan en la matriz de destino a partir de la tercera posición.

int smailPrimes = (2, 3, 5, 7, 11, 13);
int números de la suerte = (1001, 1002, 1003, 1004, 1005, 1006, 1007);
System.aggausor(smailPrimes, 2, luckyNumbers, 3, 4);
para (int i = 0; i< luckyNumbers.length; i++)
System.println(i +.": " + LuckyNumbersfi]);

La ejecución de estas declaraciones produce el siguiente resultado.

0: 1001
1: 1002
2: 1003
3: 5
4: 7
5: 11
6: 13

Arroz. 3.15. Copiar elementos de matriz

Una matriz en Java es significativamente diferente de una matriz en C++. Sin embargo, es prácticamente lo mismo que un puntero a una matriz dinámica. Esto significa que el operador

int a = nuevo int; //Java
es equivalente al operador
en t * = nuevo en t [ 1 0 0 ] ; //C++,
y no
ent a; //C++

En Java, el operador no predeterminado comprueba el rango de índices. Además, Java no tiene aritmética de punteros; no se puede incrementar un puntero para acceder al siguiente elemento de una matriz.

es una colección ordenada, o lista numerada, de valores enlace al cual se ejecuta por nombre común. Pueden ser valores primitivos, objetos o incluso otras matrices, pero todos los valores de la matriz deben ser del mismo tipo. El tipo de una matriz es idéntico al tipo de los valores que contiene.

Las matrices son tipos de datos de referencia., de hecho, como todos los demás tipos, excepto los primitivos. Permítanme recordarles nuevamente que en Java todo es un objeto, a excepción de los tipos primitivos.

Las matrices pueden ser unidimensionales o multidimensionales.

El proceso de creación de una matriz se puede dividir en tres etapas:

  • Anuncio ( declaración)
  • Creación ( instanciación)
  • Inicialización ( inicialización)

declaración de matriz

En esta etapa sólo se determina tipo de variable enlace (referencia) formar una matriz , que contiene el tipo de matriz. Para hacer esto, escriba el nombre del tipo de elementos de la matriz, los corchetes indican que se declara una referencia a una matriz , en lugar de una variable simple, y se enumeran los nombres de las variables de tipo de referencia, por ejemplo:

números ; // los números hacen referencia a una matriz de enteros
Cadena cadena ; // referencia str a una matriz de cadenas
byte
dos bytes ; // referencia de dos bytes a una matriz de bytes bidimensional
carbonizarse
letras , dígitos ; //referencias de letras y dígitos a matrices de caracteres

Esencialmente, declarar matrices es exactamente la misma operación que declarar cualquier otro tipo de datos, aunque tiene una sintaxis ligeramente diferente, ya que siguen siendo matrices.

Java admite otra sintaxis de declaración de variables de matriz que proporciona compatibilidad con C y C++. Según esta sintaxis, uno o más pares de corchetes siguen al nombre de la variable en lugar del nombre del tipo:

matrizDeBytes ; // Igual que byte arrayOfBytes
byte matrizDeMatrizDeBytes ; // Igual que byte arrayOfArrayOfBytes
byte matrizDeMatrizDeBytes ; // Igual que byte arrayOfArrayOfBytes

Sin embargo, esta sintaxis suele resultar confusa y debe evitarse. En el siguiente ejemplo, es fácil confundir lo que se quiere decir:

tarifas , tasa máxima ; // ¿tal vez querían declarar dos matrices?

No se recomienda esta sintaxis, ya que ya se ha dicho que es confusa, además, en las convenciones de formato del código Java se recomienda la sintaxis que se dio primero, es decir, los corchetes siguen inmediatamente al tipo de matriz que se declara.

En este caso, se declara una matriz de valores de tipo flotante con el nombre tasas y una variable de tipo flotante, maxRate.

Es decir, si los corchetes aparecen inmediatamente después del tipo de matriz declarada, entonces todas las variables declaradas en esta línea son referencias a matrices del tipo declarado, y si los corchetes aparecen a la derecha de la variable, entonces solo ella una referencia a la matriz del tipo declarado.

Debe entenderse que esta operación de declaración de matriz aún no crea una matriz, solo declara una variable que es una referencia a ella, que no se puede utilizar en un programa sin inicialización, ya que el compilador generará un error de que la variable de matriz no está inicializada.

Si bien una variable de matriz declarada no está definida, puede contener (si asigna) un valor nulo. Y sólo después de la definición contendrá un enlace a un objeto específico.

No es posible especificar la longitud de una matriz al declarar una variable de matriz porque el tamaño es estrictamente una función del objeto de la matriz, no de su referencia..

Creación de instancias de matriz

En esta etapa, se indica el número de elementos de la matriz, llamado su tamaño, se asigna espacio para la matriz en la RAM y el operador asigna la variable de referencia. = dirección de matriz. Todas estas acciones son realizadas por el operador. nuevo seguido por tipo elementos de la matriz. Por ejemplo:

= nuevo carbonizarse [ 10 ] ;

Pero vale la pena señalar nuevamente que antes de esto, la variable letras debe declararse como una matriz. Para que quede más claro, se puede representar así:

letras ; // letras declaradas como referencia a una matriz de caracteres
letras = nuevo carbonizarse [ 10 ] ; // creó una matriz de caracteres de tamaño 10 elementos

Cuando crea una matriz con esta sintaxis, todos los elementos de la matriz se inicializan automáticamente a los valores predeterminados.. Esto es falso para valores booleanos, "\u0000" para valores char, 0 para valores enteros, 0,0 para valores flotantes y nulo para objetos o matrices.

En Java, el tamaño de una matriz es fijo. La matriz creada no se puede aumentar ni disminuir. El tamaño deseado de la matriz creada se especifica mediante un número entero no negativo. Pero en cualquier momento, a una variable de tipo matriz se le puede asignar una nueva matriz de diferente tamaño. Es decir, se puede asignar una referencia a otro array del mismo tipo que la variable declarada.

Los índices de matriz siempre comienzan en 0.

Las dos primeras operaciones: declarar y crear una matriz se pueden combinar en un solo operador. Por ejemplo:

letras = nuevo carbonizarse [ 10 ] ;

Este operador es equivalente a los dos anteriores.

Después de esta operación, la variable letras ya contendrá una referencia a la matriz y si intentamos mostrar su valor, obtendremos un valor parecido a ;
entero b = a;

Pero debemos tener en cuenta que las variables a Y b apuntar a la misma matriz. Esto puede resultar confuso al principio, pero si recuerda que estamos tratando con tipos de datos de referencia, entonces todo encaja. Si este punto no te queda claro, un poco más adelante analizaremos todo esto con ejemplos.

= nulo ;

Después de esto, la matriz a la que apuntaba este enlace se pierde si no había otros enlaces a él..

El tamaño o longitud de una matriz se puede obtener usando una constante longitud , que se define para cada matriz y devuelve su longitud. Lo hemos usado más de una vez en ejemplos cuando trabajamos con argumentos pasados ​​en la línea de comando.

Puede crear y utilizar matrices de longitud cero (matriz vacía). Por ejemplo:

bits = nuevo booleano [ 0 ] ;

Es imposible inicializar una matriz de este tipo, ya que simplemente no tiene elementos que puedan inicializarse. Inmediatamente surge la pregunta: ¿por qué diablos necesitan estos arreglos vacíos? ¡Pero son necesarios e incluso muy útiles!

Se acostumbra utilizar una matriz vacía en aquellos lugares del programa donde no se sabe de antemano si habrá elementos o no. Si hay elementos, se devuelve una matriz no vacía, si no hay elementos, una matriz vacía. Un ejemplo sería una matriz de cadenas que se pasa al método main() y contiene argumentos de línea de comando y, si no hay ninguno, se devuelve una matriz vacía.

Una matriz vacía es mejor que nulo, porque no requiere un if separado para el procesamiento. Lo mismo ocurre con las listas y otras colecciones. Es por eso que existen los métodos Collections.emptyList, vacíoSet y vacío.

Inicialización de una matriz

En esta etapa, los elementos de la matriz reciben valores iniciales. Hay varias formas de inicializar elementos de una matriz con valores:

  1. Asigne a cada elemento de la matriz un valor específico (esto se puede hacer, por ejemplo, en un bucle, pero antes de eso la matriz ya debe estar declarada y creada)
  2. Inicialice una matriz enumerando los valores de sus elementos entre llaves (esto se puede hacer tanto en la etapa de declaración como en la etapa de creación, pero la sintaxis es diferente)

Puede acceder a un elemento de matriz específico por su índice, que empieza desde cero, como ya se ha comentado.

Los índices se pueden especificar mediante cualquier expresión entera excepto el tipo. largo , por ejemplo a , a , a[++i] . El tiempo de ejecución de Java garantiza que los valores de estas expresiones no excedan la longitud de la matriz. Si se produce una salida, el intérprete de Java dejará de ejecutar el programa y mostrará un mensaje en la consola indicando que el índice de la matriz ha superado los límites de su definición ( ArrayIndexOutOfBoundsExcepción).

Veamos un ejemplo del primer método de inicialización:

Arkansas = nuevo entero [ 2 ] ;
Arkansas[ 0 ] = 1 ;
Arkansas[ 1 ] = 2 ;

El segundo método de inicialización se puede implementar de diferentes maneras.

La inicialización de la matriz se puede combinar con la etapa de creación, pero antes de esta operación el array ya debe estar declarado. Por ejemplo:

Arkansas ; // declaración de matriz
Arkansas = nuevo entero { 1 , 2 } ; // creación e inicialización

Antes de crear e inicializar la matriz Arkansas ya ha sido anunciado.

También puede inicializar una matriz en la etapa de declararla usando la siguiente sintaxis:

Arkansas = { 1 , 2 } ; // declaración, creación e inicialización del array

¡Atención! Esta sintaxis de inicialización de matrices solo funciona cuando se declara una matriz y combina las tres operaciones: declaración, creación e inicialización. Si la matriz ya está declarada, esta sintaxis no se puede utilizar. El compilador arrojará un error. Eso es:

entero Arkansas ; // declaración de matriz
Arkansas = { 1 , 2 } ; // ¡¡¡ERROR!!! creando e inicializando una matriz

Este tipo de acción no funcionará.

También puedes inicializar en la etapa de declaración y de forma un poco diferente:

Arkansas = nuevo entero { 1 , 2 } ; // declaración, creación e inicialización

Aunque esta sintaxis es más larga. Si te diste cuenta, esta sintaxis también es una combinación de las tres operaciones: declaración, creación e inicialización.

Java proporciona una sintaxis que admite matrices anónimas (no están asignadas a variables y, por lo tanto, no tienen nombres). A veces solo necesitas usar una matriz una vez (por ejemplo, pasarla a un método), por lo que no quieres perder tiempo asignándola a una variable, por lo que puedes usar el resultado del operador de inmediato. nuevo. Por ejemplo:

. afuera . imprimir( nuevo carbonizarse { "H", "mi", "yo", "yo", "oh"}) ;

La sintaxis para inicializar matrices usando llaves se llama literal porque se usa un literal de matriz para la inicialización.

Es importante comprender que las matrices literales se crean e inicializan durante la ejecución del programa y no durante la compilación.. Considere el siguiente literal de matriz:

números perfectos = { 6 , 28 } ;

Se compila en código de bytes de Java de esta manera:

números perfectos = nuevo entero [ 2 ] ;
números perfectos[ 0 ] = 6 ;
números perfectos[ 1 ] = 28 ;

Entonces, si necesita colocar una gran cantidad de datos en un programa Java, es mejor no incluirlos directamente en una matriz porque el compilador de Java tendrá que crear una gran cantidad de código de bytes de inicialización de la matriz y luego el intérprete de Java tendrá que ejecutar minuciosamente. todo ese código. En tales casos, es mejor almacenar los datos en un archivo externo y leerlos en el programa mientras se ejecuta.

Sin embargo, el hecho de que Java inicialice la matriz en tiempo de ejecución tiene consecuencias importantes. Esto significa que los elementos de una matriz literal son expresiones arbitrarias evaluadas en tiempo de ejecución, en lugar de expresiones constantes evaluadas por el compilador.. Por ejemplo:

agujas = { círculo1.getCenterPoint () , círculo2.getCenterPoint () } ;

Ahora practiquemos un poco.

El conocido método main() utiliza la capacidad de devolver una matriz de longitud cero si no hay argumentos en la línea de comando, lo que evita el uso de la instrucción if para verificar si hay valores nulos para evitar errores durante la ejecución del programa.

Es decir, podemos utilizar inmediatamente el array en un bucle, aunque siguiendo las reglas para no sobrepasar el índice máximo.

Al comienzo del programa, imprimimos la longitud de la matriz y luego, en el primer ciclo, imprimimos secuencialmente todos los valores de los elementos de la matriz. El segundo bucle hace lo mismo, pero de forma retorcida.

El segundo ejemplo, te saludo, para complacer a tu cerebro, para expandir tu conciencia, no estabas aburrido, sabías lo que podías hacer, pero lo que no debías hacer, y con fines puramente educativos. Quizás en tu tiempo libre puedas descubrir cómo funciona el segundo ciclo.

Este programa genera el siguiente resultado:

En el primer caso, no ingresamos ningún argumento, por lo que terminamos con una matriz de longitud cero, que no se procesó en los bucles porque no cumplía las condiciones de los bucles.

En el segundo caso, pasamos los argumentos en la línea de comando y por lo tanto la matriz se procesó en bucles.




Arriba