Array de Arrays

Olá pessoal,

Estou estudando para tirar certificação Java e estou com uma dúvida. Veja abaixo o código que fiz onde tenho um array1 e um array2, ambos bidimensionais. Qual a diferença das duas formas de implementação? Há alguma diferença? Pq eu nunca tinha visto essa forma de inicializar array sem falar o número de colunas: byte[][] array12 = new byte[3][];
Vi isso aqui no livro de certificação apenas.

package arrays;

public class MultiArray2 {
	public static void main(String[] args) {
		
		System.out.println("Array1 \n");
		
		byte[][] array1 = new byte[3][2];
		
		array1[0][0] = 0;
	    array1[0][1] = 1;
	    
	    array1[1][0] = 2;
	    array1[1][1] = 3;
	    
	    array1[2][0] = 4;
	    array1[2][1] = 5;
	    
	    for(int l=0; l < array1.length; l++){
	    	for(int c=0; c < 2; c++){
	    		System.out.print(array1[l][c] + " ");
	    	}
	    	System.out.println("\n");
	    }
	    
	    System.out.println("Array2 \n");
	    
	    byte[][] array2 = new byte[3][];

	    // Now allocate the columns
	    array2[0] = new byte[2];
	    array2[1] = new byte[2];
	    array2[2] = new byte[2];
	    
	    array2[0][0] = 0;
	    array2[0][1] = 1;
	    
	    array2[1][0] = 2;
	    array2[1][1] = 3;
	    
	    array2[2][0] = 4;
	    array2[2][1] = 5;
	    
	    for(int l=0; l < array2.length; l++){
	    	for(int c=0; c < 2; c++){
	    		System.out.print(array2[l][c] + " ");
	    	}
	    	System.out.println("\n");
	    }
	}
}

Olá estou estudando pra certificação também. Acho

que isso funciona porque:

byte[][] array2 = new byte[3][]

é o mesmo que um array de referências para outro arrays.

O que vc criou foi isso:

array2[0] = null; array2[1] = null; array2[2] = null;

Depois posso atribuir a cada referência um obj array como vc fez:
(Inclusive posso colocar tamanhos diferentse para cada um)

array2[0] = new byte[2]; array2[1] = new byte[100]; array2[2] = new byte[5];

Não sei se respondi abcs

Vou ser mais específico.

Isso:

byte[][] array1 = new byte[3][2];

é o mesmo que isso?

byte[][] array2 = new byte[3][];

	    // Now allocate the columns
	    array2[0] = new byte[2];
	    array2[1] = new byte[2];
	    array2[2] = new byte[2];

Internamente essa declaração byte[][] array1 = new byte[3][2]; gera um array de arrays?

Obrigado e abraço

Sim é a mesma coisa. abcs

certo, muito obrigado então Murad. Algum outro usuário gostaria de fazer alguma observação relevante levando em conta que eu e o Murad estamos estudando para a certificação? Gostariam de expor algum detalhe técnico que deveríamos saber.

valeu galera!