En Java, una matriz es una estructura de datos lineal importante que nos permite almacenar múltiples valores del mismo tipo.
- Las matrices en Java son objetos como todos los demás objetos en las matrices de Java que se heredan implícitamente de la clase java.lang.Object. Esto le permite invocar métodos definidos en Object (como toString() es igual a() y hashCode()).
- Las matrices tienen una propiedad de longitud incorporada que proporciona la cantidad de elementos en la matriz.
public class Geeks { public static void main(String[] args) { // initializing array int[] arr = {40 55 63 17 22}; // size of array int n = arr.length; // traversing array for (int i = 0; i < n; i++) System.out.print(arr[i] + ' '); } }
Producción
40 55 63 17 22
Características clave de las matrices
- Almacenar primitivas y objetos: Las matrices Java pueden contener tanto tipos primitivos (como int char boolean, etc.) como objetos (como String Integer, etc.)
- Asignación de memoria contigua Cuando utilizamos matrices de tipos primitivos, los elementos se almacenan en ubicaciones contiguas. Para tipos no primitivos, las referencias de elementos se almacenan en ubicaciones contiguas.
- Indexación de base cero: El primer elemento de la matriz está en el índice 0.
- Longitud fija: Después de crear una matriz, su tamaño es fijo; no podemos cambiarlo.
Representación de matriz primitiva en Java
Representación de matriz no primitiva en JavaOperación básica en matrices en Java
1. Declarar una matriz
La forma general de declaración de matriz es
// Método 1:
int arreglo[];// Método 2:
int[] arr;
El tipo de elemento determina el tipo de datos de cada elemento que compone la matriz. Al igual que una matriz de números enteros, también podemos crear una matriz de otros tipos de datos primitivos como char float double, etc. o tipos de datos definidos por el usuario (objetos de una clase).
Nota: Así es como podemos crear una variable de matriz, no existe una matriz real. Simplemente le dice al compilador que esta variable (int Array) contendrá una matriz de tipo entero.
2. Inicialización de una matriz en Java
Cuando se declara una matriz, solo se crea una referencia de una matriz. Usamos new para asignar una matriz de un tamaño determinado.
int arr[] = nuevo int[tamaño];
- La declaración de matriz es generalmente estática, pero si el tamaño no está definido, la matriz tiene un tamaño dinámico.
- La memoria para matrices siempre se asigna dinámicamente (en un segmento de montón) en Java. Esto es diferente de C/C++ donde la memoria se puede asignar estática o dinámicamente.
- Los elementos de la matriz asignados por new se inicializarán automáticamente en cero (para tipos numéricos), falso (para booleanos) o nulo (para tipos de referencia).
Matriz literal en Java
En una situación en la que el tamaño de la matriz y las variables de la matriz ya se conocen, se pueden utilizar literales de matriz.
// Declarando matriz literal
int[] arr = nuevo int[]{ 12345678910 };
- La longitud de esta matriz determina la longitud de la matriz creada.
- No es necesario escribir la nueva parte int[] en las últimas versiones de Java.
3. Cambiar un elemento de matriz
Para cambiar un elemento, asigne un nuevo valor a un índice específico. El índice comienza con 0 y termina en (tamaño total de la matriz) -1.
procesamiento de piratería
// Cambiando el primer elemento a 90
arreglo[0] = 90;selenio
4. Longitud de la matriz
Podemos obtener la longitud de una matriz usando la propiedad de longitud:
//Obteniendo la longitud de la matriz
int n = longitud del arreglo;
5. Acceder y actualizar todos los elementos de la matriz
- Se puede acceder a todos los elementos de la matriz utilizando Java for Loop.
- Se accede a cada elemento de la matriz a través de su índice.
Acceso y actualización de todos los elementos de la matrizEl programa Java para ilustrar la creación de una matriz de números enteros coloca algunos valores en la matriz e imprime cada valor en la salida estándar
Javaclass Geeks { public static void main(String[] args) { // declares an Array of integers. int[] arr; // allocating memory for 5 integers. arr = new int[5]; // initialize the elements of the array // first to last(fifth) element arr[0] = 2; arr[1] = 4; arr[2] = 8; arr[3] = 12; arr[4] = 16; // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at index ' + i + ' : ' + arr[i]); } }
Producción
Element at index 0 : 2 Element at index 1 : 4 Element at index 2 : 8 Element at index 3 : 12 Element at index 4 : 16
Matrices de objetos en Java
Una matriz de objetos se crea como una matriz de elementos de datos de tipo primitivo.
Ejemplo : Aquí tomamos una clase de estudiante y creamos una matriz de Estudiantes con cinco objetos de Estudiante almacenados en la matriz. Se deben crear instancias de los objetos Student utilizando el constructor de la clase Student y sus referencias deben asignarse a los elementos de la matriz.
class Student { public int roll_no; public String name; Student(int roll_no String name){ this.roll_no = roll_no; this.name = name; } } public class Geeks { public static void main(String[] args){ // declares an Array of Student Student[] arr; // allocating memory for 5 objects of type Student. arr = new Student[5]; // initialize the elements of the array arr[0] = new Student(1 'aman'); arr[1] = new Student(2 'vaibhav'); arr[2] = new Student(3 'shikar'); arr[3] = new Student(4 'dharmesh'); arr[4] = new Student(5 'mohit'); // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at ' + i + ' : { ' + arr[i].roll_no + ' ' + arr[i].name+' }'); } }
Producción
Element at 0 : { 1 aman } Element at 1 : { 2 vaibhav } Element at 2 : { 3 shikar } Element at 3 : { 4 dharmesh } Element at 4 : { 5 mohit } ¿Qué sucede si intentamos acceder a elementos fuera del tamaño de la matriz?
JVM lanza ArrayIndexOutOfBoundsException para indicar que se ha accedido a la matriz con un índice ilegal. El índice es negativo o mayor o igual que el tamaño de una matriz.
El siguiente código muestra lo que sucede si intentamos acceder a elementos fuera del tamaño de la matriz:
Javapublic class Geeks { public static void main(String[] args) { int[] arr = new int[4]; arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; System.out.println( 'Trying to access element outside the size of array'); System.out.println(arr[5]); } }
Producción:
Salida de elementos fuera del tamaño de la matriz.Pasar matrices a métodos
Al igual que las variables, también podemos pasar matrices a métodos. Por ejemplo, el siguiente programa pasa la matriz al método suma para calcular la suma de los valores de la matriz.
Ejemplo:
Javapublic class Geeks { // Driver method public static void main(String args[]) { int arr[] = { 3 1 2 5 4 }; // passing array to method m1 sum(arr); } public static void sum(int[] arr) { // getting sum of array values int sum = 0; for (int i = 0; i < arr.length; i++) sum += arr[i]; System.out.println('sum of array values : ' + sum); } }
Producción
sum of array values : 15
Explicación
- Este programa Java demuestra cómo pasar una matriz a un método.
- Una matriz de enteros arr se declara e inicializa en el método principal.
- El método sum() se llama con arr como argumento.
- Dentro del método sum() todos los elementos de la matriz se agregan mediante un bucle for.
- Luego, la suma final se imprime en la consola.
Devolver matrices de métodos
Como es habitual, un método también puede devolver una matriz. Por ejemplo, el siguiente programa devuelve una matriz del método m1.
Ejemplo:
Javaclass Geeks { // Driver method public static void main(String args[]) { int arr[] = m1(); for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + ' '); } public static int[] m1() { // returning array return new int[] { 1 2 3 }; } }
Producción
1 2 3
Ventajas de las matrices Java
- Acceso eficiente: Acceder a un elemento por su índice es rápido y tiene una complejidad temporal constante O (1).
- Gestión de la memoria: Las matrices tienen un tamaño fijo, lo que hace que la gestión de la memoria sea sencilla y predecible.
- Organización de datos: Las matrices ayudan a organizar los datos de forma estructurada, lo que facilita la gestión de elementos relacionados.
Desventajas de las matrices Java
- Tamaño fijo: Una vez creada una matriz, su tamaño no se puede cambiar, lo que puede provocar un desperdicio de memoria si se sobreestima el tamaño o un almacenamiento insuficiente si se subestima.
- Tipo de homogeneidad: Las matrices solo pueden almacenar elementos del mismo tipo de datos que pueden requerir un manejo adicional para tipos de datos mixtos.
- Inserción y Eliminación: Insertar o eliminar elementos, especialmente en medio de una matriz, puede resultar costoso ya que puede requerir el desplazamiento de elementos.
Publicaciones relacionadas
- Matriz irregular en Java
- Para cada bucle en Java
- Clase de matrices en Java