Mais ou menos isso. Perceba que a coisa vem desde o começo. Como cant[0] recebe pant, e pant na posição 1 só tem uma posição, cant[0][1] passa a ter somente uma posição também. Note que cant[0][1] perde tamanho, ou seja, passa de tamanho 5 para 1. Exemplo:
[code]int [] ant = new int[]{1,2,3,4};
int [] pant[]= new int[][] {{12},{13}};
int cant [] [][]= new int [][][] {{{22,23,24,24,25},{222,223,223,224,225},{2222,2223,2223,2224,2225}}};
cant [0] [1] [3] = 22; //Aqui, cant[0][1] AINDA NÃO MUDOU de tamanho
ant[0] = 10; ant[1] = 15; ant[2]=30; //defino novos valores para ant[]
pant[0] = ant;
// na linha acima temos uma mudança no tamanho da posição 0 de ant:
// ela passa a ter tamanho 4, que é o tamanho de ant
// mas a posição pant[1] continua com tamanho 1 (e valor 13)
cant[0] = pant;
// na linha acima, a posição 0 de cant recebe pant.
// E qual é o tamanho de pant? 4 na posição 0, mas 1 na posição 1,
// ou seja, o tamanho de cant[0] é alterado
// Para confirmar, fazemos:
System.out.println("Tamanho pant[0]: " + pant[0].length); // vai exibir “Tamanho pant[0]: 4”
System.out.println("Tamanho pant[1]: " + pant[1].length); // vai exibir “Tamanho pant[1]: 1”
cant [0] [0] [3] = 20; //informo que meu cant [0] [0] [3] recebe 20;
System.out.println(“Tamanho cant[0][1]:” + cant[0][1].length);
cant [0] [1] [3] = 2020; //ArrayIndexOutOfBoundsException!!! [/code]
Nota: suprimi os System.out pra facilitar o entendimento. Se eu não errei alguma conta, é isso aí que ocorre.
Abraço.