Sí, solo crea referencias, que se establecen en su valor predeterminado nulo. Es por eso que obtienes una NullPointerException. Necesitas crear objetos por separado y asignar la referencia. Hay 3 pasos para crear matrices en Java:
Declaración : en este paso, especificamos el tipo de datos y las dimensiones de la matriz que vamos a crear. Pero recuerde, todavía no mencionamos los tamaños de las dimensiones. Se dejan vacíos.
Creación de instancias : en este paso, creamos la matriz o asignamos memoria para la matriz, utilizando la nueva palabra clave. Es en este paso que mencionamos los tamaños de las dimensiones de la matriz.
Inicialización : la matriz siempre se inicializa con el valor predeterminado del tipo de datos. Pero podemos hacer nuestras propias inicializaciones.
Declarar matrices en Java
Así es como declaramos una matriz unidimensional en Java:
int[] array;
int array[];
Oracle recomienda que utilice la sintaxis anterior para declarar matrices. Aquí hay otros ejemplos de declaraciones legales:
// One Dimensional Arrays
int[] intArray; // Good
double[] doubleArray;
// One Dimensional Arrays
byte byteArray[]; // Ugly!
long longArray[];
// Two Dimensional Arrays
int[][] int2DArray; // Good
double[][] double2DArray;
// Two Dimensional Arrays
byte[] byte2DArray[]; // Ugly
long[] long2DArray[];
Y estos son algunos ejemplos de declaraciones ilegales:
int[5] intArray; // Don't mention size!
double{} doubleArray; // Square Brackets please!
Instanciación
Así es como "instanciamos" o asignamos memoria para una matriz:
int[] array = new int[5];
Cuando la JVM encuentra la new
palabra clave, comprende que debe asignar memoria para algo. Y al especificar int[5]
, queremos decir que queremos una matriz de int
s, de tamaño 5. Entonces, la JVM crea la memoria y asigna la referencia de la memoria recién asignada a la matriz que es una "referencia" de tipoint[]
Inicialización
Uso de un bucle : usar un bucle for para inicializar elementos de una matriz es la forma más común de poner en marcha la matriz. No es necesario ejecutar un bucle for si va a asignar el valor predeterminado en sí mismo, porque JVM lo hace por usted.
Todo en uno..! - Podemos declarar, instanciar e inicializar nuestra matriz de una vez. Aquí está la sintaxis:
int[] arr = {1, 2, 3, 4, 5};
Aquí, no mencionamos el tamaño, porque JVM puede ver que estamos dando 5 valores.
Entonces, hasta que creemos una instancia, las referencias permanecerán nulas. Espero que mi respuesta te haya ayudado..! :)