O array matrix[i][j][k] não são 3 números? Por exemplo: 0,0,0 ; 0,0,1 ; 0,0,2; etc ?
Não, i, j e k são os índices onde o valor se encontra.
Um array tridimensional nada mais é do que um array de arrays bidimensionais
E um array bidimensional é um array de arrays unidimensionais
Dessa forma, no seu exemplo a variável i corresponde ao índice do array bidimensional que está dentro do array tridimensional
A variável j corresponde ao indice do array unidimensional dentro do array bidimensional acessado por i
A variável k corresponde ao elemento na posição K do array unidimensional acessado por j.
Então, quando você faz :
int valor = array3d[i][j][k];
É o mesmo que fazer:
int [][] array2d = array3d [ i ] ;
int [] array = array2d [ j ] ;
int valor = array [ k ] ;
Imagine o seguinte array tridimensional:
int [][][] array3d = new int [][][] {
new int [][] {
new int [] { 1 , 2 , 3 , 4 , 5 },
new int [] { 6 , 7 , 8 , 9 , 10 },
},
new int [][] {
new int [] { 11 , 12 , 13 , 14 , 15 },
new int [] { 16 , 17 , 18 , 19 , 20 },
},
};
Isso é exatamente o mesmo que escrever:
int [] array_1 = new int [] { 1 , 2 , 3 , 4 , 5 },
int [] array_2 = new int [] { 6 , 7 , 8 , 9 , 10 },
int [] array_3 = new int [] { 11 , 12 , 13 , 14 , 15 },
int [] array_4 = new int [] { 16 , 17 , 18 , 19 , 20 },
int [][] array2d_1 = new int [][] { array_1 , array_2 };
int [][] array2d_2 = new int [][] { array_3 , array_4 };
int [][][] array3d = new int [][][] { array2d_1 , array2d_2 };
No exemplo acima:
array3d [ 0 ][ 0 ][ 0 ] contém o valor 1
array3d [ 0 ][ 0 ][ 1 ] contém o valor 2
array3d [ 0 ][ 1 ][ 0 ] contém o valor 6
array3d [ 0 ][ 1 ][ 1 ] contém o valor 7
array3d [ 1 ][ 0 ][ 0 ] contém o valor 11
array3d [ 1 ][ 0 ][ 1 ] contém o valor 12
array3d [ 1 ][ 1 ][ 0 ] contém o valor 16
array3d [ 1 ][ 1 ][ 0 ] contém o valor 17