1. Arrays en memoria
En los ejemplos anteriores, las ilustraciones eran un poco inexactas.
Al crear matrices (como cuando se crean cadenas), se asignan dos bloques de memoria separados: uno para almacenar la matriz (contenedor) en sí y un segundo bloque para la variable que almacena su dirección . La siguiente imagen representa esta aclaración:
La memoria asignada para la matriz de 10
int
elementos y la int[]
variable que almacena la dirección de la int
matriz, se muestra en verde.
int
A modo de comparación, una variable ordinaria que almacena el valor 199
se muestra en azul.
Esto recuerda un poco a almacenar cadenas en la memoria, ¿no crees?
Así es, cuerdas. Y al igual que cuando trabaja con cadenas, puede asignar variables de matriz entre sí:
Código | Explicación |
---|---|
|
Crear una matriz de 10 int elementos. Asigne el valor 4 a la celda con índice 2 . Asigne el valor 9 a la celda con índice 7 . En la b variable, guarde la dirección almacenada en la a variable. Ahora a y b apunte al mismo objeto de matriz en la memoria. En la celda del objeto de matriz con índice 9 , escriba la suma de los valores que se almacenan en las celdas 2 (que almacena el valor 4 ) y 7 (que almacena el valor 9 ). |
El objeto de matriz permanece justo donde estaba, y las variables a
y b
almacenan la misma dirección (referencia) al mismo objeto. Mira la imagen:
2. Más detalles sobre cómo trabajar con arreglos
Puede crear una matriz de elementos de absolutamente cualquier tipo. Para hacer esto, simplemente escriba corchetes después del nombre del tipo. En general, la creación de una matriz se ve así:
type[] name = new type[number];
Donde tipo es el tipo de los elementos que almacenaremos en la matriz. Nombre es el nombre de la variable que usaremos para referirnos a la matriz, y número es el número de celdas en la matriz.
El ejemplo anterior es la forma canónica para crear una variable de matriz y un objeto de matriz. En realidad, estas son dos entidades separadas.
Puede crear una variable de matriz por separado de un objeto de matriz:
type[] name;
name = new type[number];
Y un punto más que no es menor:
Ejemplos:
Código | Explicación |
---|---|
|
Crear una matriz de n elementos. |
|
Crear una matriz con 203 elementos |
|
|
0..99
un ArrayIndexOfBoundException
, lo que significa que el índice estaba fuera de los límites de la matriz.
3. Longitud de la matriz
Como vio en el ejemplo anterior, puede crear una variable de matriz por sí misma y luego asignarle un valor (una referencia a un objeto de matriz) en algún lugar del código. Incluso puedes hacer esto:
Código | Explicación |
---|---|
|
Cree una variable de matriz cuyo tipo sea int[] Si la a variable es menor que 10 , cree una matriz de 10 elementos. De lo contrario, cree una matriz de 20 elementos. |
Y ahora, ¿qué más puedes hacer con tal matriz? ¿Cómo sabes cuántos elementos hay en él?
Para ayudar con esto, los arreglos tienen una propiedad especial (variable) llamada length
. Puedes encontrar la longitud de una matriz usando esta expresión:
array.length;
Aquí array
está el nombre de la variable de matriz y length
es el nombre de la propiedad de la matriz. El valor de la length
propiedad no se puede cambiar: la length
propiedad en sí se puede asignar a otras variables, pero no se le puede asignar nada (si intenta hacer esto, el programa simplemente no compilará).
Podemos continuar con el ejemplo anterior así:
Código | Explicación |
---|---|
|
Cree una variable de matriz cuyo tipo sea int[] Si la a variable es menor que 10 , cree una matriz de 10 elementos. De lo contrario, cree una matriz de 20 elementos Haga un bucle sobre todos los elementos de la matriz: de 0 a longitudarray.length - 1 |
4. Resumen de hechos sobre arreglos en Java
Recapitulemos lo que sabemos sobre las matrices:
Hecho 1. Una matriz consta de muchas celdas.
Dato 2. Accedes a una celda específica usando su número (índice).
Hecho 3. Todas las células son del mismo tipo.
Hecho 4. El valor inicial de todas las celdas es 0 (si las celdas almacenan números), null
(si las celdas almacenan referencias a objetos) o false
(si las celdas almacenan boolean
valores). Aprenderá más sobre los valores predeterminados en este capítulo .
El hecho 5. String[] list
es solo la declaración de una variable. Esto no crea el contenedor (objeto de matriz) en sí mismo. Para usar la variable, primero debe crear una matriz (contenedor) y asignarla a la variable. Vea el ejemplo a continuación.
Hecho 6. Cuando creamos un objeto de matriz (contenedor), debemos indicar qué tan grande es, es decir, cuántas celdas contiene. Esto se hace con una declaración como: new TypeName[n]
;
Hecho 7. La longitud de una matriz se puede encontrar usando la .length
propiedad.
Dato 8. Después de crear una matriz, no puede cambiar el tipo de sus elementos o la cantidad de elementos que almacena.
Código | Explicación |
---|---|
|
s es null list esnull |
|
La list variable almacena una referencia a un objeto: una matriz de cadenas que consta de 10 elementos. n es10 |
|
Ahora |
|
Se lanzará una excepción (error de programa), es decir, el programa fallará. list almacena una referencia anull |
|
Se generará una excepción de matriz fuera de los límites (error de programa). Si list almacena 10 elementos/celdas, los índices válidos son: 0 1 2 3 4 5 6 7 8 9 — 10 elementos. |
GO TO FULL VERSION