Matrices en Java

โšก Resumen inteligente

Matrices en Java Son contenedores de tamaรฑo fijo, basados โ€‹โ€‹en รญndices, que almacenan elementos de un mismo tipo de datos en memoria contigua, lo que proporciona acceso en tiempo constante, comprobaciรณn de lรญmites integrada y un campo de longitud que los convierte en la base de la mayorรญa de las colecciones de bibliotecas estรกndar.

  • ๐Ÿ“ฆ Tamaรฑo fijo: Un array contiene un nรบmero fijo de elementos de un solo tipo.
  • ๐Ÿ”ข รndice basado en cero: Los elementos van desde 0 hasta la longitud menos uno.
  • ๐Ÿงฉ Dos tipos: Java Tiene matrices unidimensionales y multidimensionales.
  • ๐Ÿ› ๏ธ Tres pasos: Cada matriz se declara y se construye con newy se inicializรณ.
  • ๐Ÿ›ก๏ธ Comprobaciรณn de lรญmites: La JVM lanza ArrayIndexOutOfBoundsException mรกs allรก del รบltimo espacio.
  • โ†ฉ๏ธ Por referencia: Los cambios realizados en los elementos dentro de un mรฉtodo persisten para quien lo llama.
  • ๐Ÿ“ Campo de longitud: Cada matriz expone length para una iteraciรณn segura.

Matrices en Java

ยฟQue es un Java ยฟFormaciรณn?

A Java matriz es una estructura de tamaรฑo fijo que almacena elementos de un tipo de datos en memoria contigua. A cada elemento se accede mediante un รญndice basado en cero, por lo que el primero se encuentra en 0 y el รบltimo en length - 1. Los arreglos heredan de Object e implementar Serializable y Cloneabley puede contener tipos primitivos o referencias a objetos.

Los arreglos reemplazan largas secuencias de variables numeradas. Consideremos seis nรบmeros enteros independientes:

x0 = 0;
x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
x5 = 5;

Los mismos seis valores residen en un รบnico array de longitud seis:

x[0] = 0;
x[1] = 1;
x[2] = 2;
x[3] = 3;
x[4] = 4;
x[5] = 5;

A loops La variable puede controlar el รญndice entre corchetes, por lo que tres lรญneas procesan cada elemento en lugar de seis copias:

for (int count = 0; count < 5; count++) {
    System.out.println(x[count]);
}

Tipos de matriz en Java

Java Los arreglos vienen en dos formas:

  1. Matriz unidimensional: una lista plana de elementos.
  2. Matriz multidimensional: una matriz de matrices, utilizada para cuadrรญculas y matrices.

Variables de matriz: Declaraciรณn, construcciรณn e inicializaciรณn

Usar una matriz es una proceso de tres pasos: declarar, construir con new, luego inicializar.

1) Declarar el array

Sintaxis:

<elementType>[] <arrayName>;

or (el formato antiguo estilo C, todavรญa vรกlido):

<elementType> <arrayName>[];

Ejemplo:

int[] intArray;   // canonical form: brackets on the type
int intArray2[];  // legacy C-style form, discouraged in new code

2) Construir el arreglo

Sintaxis:

arrayName = new dataType[size];

Ejemplo:

intArray = new int[10]; // defines that intArray will store 10 integer values

Declaraciรณn y construcciรณn combinadas:

int[] intArray = new int[10];

3) Inicializar el array

intArray[0] = 1; // assigns 1 to the first element (index 0)
intArray[1] = 2; // assigns 2 to the second element (index 1)

Declarar e inicializar en un solo paso. utilizando un literal de matriz:

int[] intArray = {1, 2, 3, 4};
// initialises an integer array of length 4 where the first element is 1,
// the second element is 2, and so on.

Primer programa de arreglos en Java

Paso 1) Copia el siguiente cรณdigo en un editor:

class ArrayDemo {
    public static void main(String args[]) {
        int array[] = new int[7];

        for (int count = 0; count < 7; count++) {
            array[count] = count + 1;
        }

        for (int count = 0; count < 7; count++) {
            System.out.println("array[" + count + "] = " + array[count]);
        }

        // System.out.println("Length of Array  =  " + array.length);
        // array[8] = 10;
    }
}

Paso 2) Guarda, compila y ejecuta el cรณdigo. Observa el resultado.

Rendimiento esperado:

array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
array[5] = 6
array[6] = 7

Paso 3) If x es una referencia a un array, x.length Devuelve su nรบmero de ranuras. Descomente la primera lรญnea comentada y vuelva a ejecutar:

Length of Array  =  7

Paso 4) A diferencia de C, Java realiza comprobaciones de lรญmites en cada acceso a la matriz. Descomente la segunda lรญnea comentada y vuelva a ejecutar:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
        at ArrayDemo.main(ArrayDemo.java:11)
Command exited with non-zero status 1

Paso 5) La JVM lanza ArrayIndexOutOfBoundsExceptionEn C, el mismo acceso devolverรญa basura de la memoria adyacente en lugar de fallar.

Java Array: Paso por referencia

Los arrays se pasan a los mรฉtodos por referencia. El mรฉtodo recibe una copia de la referencia, por lo que los cambios realizados en los elementos dentro del mรฉtodo son visibles para quien lo llama.

Ejemplo: los arreglos se pasan por referencia.

Paso 1) Copia el siguiente cรณdigo en un editor:

class ArrayDemo {
    public static void passByReference(String a[]) {
        a[0] = "Changed";
    }

    public static void main(String args[]) {
        String[] b = {"Apple", "Mango", "Orange"};
        System.out.println("Before Function Call    " + b[0]);
        ArrayDemo.passByReference(b);
        System.out.println("After Function Call    " + b[0]);
    }
}

Paso 2) Guarda, compila y ejecuta el cรณdigo. Observa el resultado.

Rendimiento esperado:

Before Function Call    Apple
After Function Call    Changed

Matrices multidimensionales en Java

Las matrices multidimensionales son matrices de matrices. Aรฑada otro conjunto de corchetes para cada dimensiรณn. Para crear una cuadrรญcula entera bidimensional con cuatro filas y cinco columnas:

int[][] twoD = new int[4][5];

Solo necesitas dimensionar la primera dimensiรณn (la de mรกs a la izquierda) al principio. Las dimensiones restantes se pueden asignar por separado, y cada fila puede tener su propia longitud, lo que hace que Java Matrices 2D verdaderas matrices irregulares.

Ejemplo:

public class Guru99 {
    public static void main(String[] args) {
        // Create a 2-dimensional array with 4 rows and 4 columns.
        int[][] twoD = new int[4][4];

        // Assign three elements to it.
        twoD[0][0] = 1;
        twoD[1][1] = 2;
        twoD[3][2] = 3;

        System.out.print(twoD[0][0] + " ");
    }
}

Rendimiento esperado:

1

Preguntas Frecuentes

A Java Un array es un contenedor de tamaรฑo fijo que almacena elementos de un solo tipo de dato. Se accede a cada elemento mediante un รญndice basado en cero, y cada array expone un campo de longitud con el nรบmero de ranuras.

Declara con int[] arr, construye con new int[size] y luego asigna por รญndice. Para hacer las tres cosas en una sola lรญnea, usa un literal como int[] arr = {1, 2, 3, 4}.

Java Admite matrices unidimensionales y multidimensionales. Una matriz unidimensional es una lista plana, y una matriz multidimensional es una matriz de matrices que se utiliza para tablas, cuadrรญculas y matrices.

Utilice el campo length, por ejemplo arr.length. Devuelve la cantidad de ranuras y funciona con cualquier tipo de array. A diferencia de String, los arrays exponen length como un campo, no como una llamada a un mรฉtodo.

La JVM comprueba los lรญmites en cada acceso a la matriz. Leer o escribir un รญndice inferior a cero o igual o superior a la longitud genera una excepciรณn ArrayIndexOutOfBoundsException, lo que evita los errores de corrupciรณn de memoria que plagan a C y C++.

Java Los argumentos se pasan por valor, pero en el caso de los arrays, ese valor es una copia de la referencia. El mรฉtodo actรบa sobre el mismo array subyacente, por lo que los cambios en los elementos dentro del mรฉtodo son visibles para quien lo llama.

Los asistentes de cรณdigo de aprendizaje automรกtico reconocen el patrรณn declarar-construir-inicializar y completan literales o bucles. Tambiรฉn detectan errores comunes de รญndices desfasados โ€‹โ€‹que provocarรญan una excepciรณn ArrayIndexOutOfBoundsException en tiempo de ejecuciรณn.

Sรญ. GitHub Copilot genera automรกticamente declaraciones de matrices, bucles, llamadas a Arrays.sort y recorridos de matrices bidimensionales a partir de un comentario en lenguaje natural. RevRevise los lรญmites generados antes de ejecutar la prueba con los datos de producciรณn.

Resumir este post con: