Es sencillo, un array es una sucesión de elementos, imagínatelo como una fila de cajas en las que metes algo concreto, eso sí, todos los elementos han de ser del mismo tipo.
En java se declaran así:
int[] enteros = new int[5];
Ese permitirá almacenar 5 elementos de tipo int. Sí, has de especificar el tamaño al crearlo.
Otra forma es:
int[] enteros = {1, 5, 6, 23, 45};
Ahí le estás diciendo que tendrá el array ya dentro, les das valores a la par que el cuenta el número de elementos y ya asigna ese tamaño.
Una vez tienes el array, puedes acceder a cada posición, ya sea para leer el valor o para asignarle uno de esta forma:
enteros[0] = 1;
System.out.println(enteros[0])
Ahí estás accediendo a la primera posición del array, ten en cuenta que el índice (el número que pones entre '[ ]' empieza en 0 y termina en tamaño-1, es decir, que en enteros irá de 0 a 4.
Los arrays son uno de los tipos básicos de Java y se usan con muchísima frecuencia, así que te recomiendo que veas las funciones que tienen, por ejemplo, la más utiliada:
enteros.length
Esta devuelve el tamaño del array, en nuestro caso, 5.
Por otra lado, una matriz, al igual que en matemáticas, es un conjunto de filas y columnas, una tabla, y en programación se traduce por un array bidimensional. También puedes verlos como una fila de cajas con una fila de cajas dentro.
Su funcionamiento es igual al de un array, solo que tiene dos niveles de [][]
int[] matrix = new int[5][5];
int[] enteros = {{1, 5, 6, 23, 45}, {1, 5, 6, 23, 45}, {1, 5, 6, 23, 45}, {1, 5, 6, 23, 45}, {1, 5, 6, 23, 45}};
enteros[0][4] = 1;
System.out.println(enteros[0][4])
Pero esto no termina aquí, en programación puedes usar tantas dimensiones como quieras, solo que has de tener en cuenta que en cada nivel es un array que contiene arrays, el coste computacional de ello es muy grande.