Olá, pessoal. Porque este código lança NullPointerException?
int[][] test = new int[3][];
test[0][0] = 0;
Ainda não entendi porque compila inicializar um array multidimensional com coluna vazia []
Olá, pessoal. Porque este código lança NullPointerException?
int[][] test = new int[3][];
test[0][0] = 0;
Ainda não entendi porque compila inicializar um array multidimensional com coluna vazia []
No Array multidimensional(matriz), cada índice irá conter a referência para outro Array.
Neste momento é criado uma instância de um Array multimensional com três índices reservados para Arrays de ints qualquer:
int[][] test = new int[3][];Estes índices, guardando referências para outras referências(Arrays de ints) não inicializados é passado ao compilador que inicializa-os com o valor padrão(null):
Era possível definir um tamanho de Array igual para cada índice como:
int[][] test = new int[3][2];int[][] test = new int[3][3];int[][] test = new int[3][1];Porém, ao não definir o tamanho de cada Array tem-se a liberdade de criar Arrays com tamanhos diferentes para cada índice:
O Java dá essa liberdade: definir um tamanho específico para estes Arrays, ou, apenas moldar e definir as instâncias posteriormente.
No caso abaixo, aja visto que não há referência alguma para um Array de ints no seu índice 0, ao tentar acessar este “tal Array” e definir o valor 0 no índice 0 é lançado o NullPointerException.
test[0][0] = 0;Belê?
Eita cara bom. Obrigado.