Em um array bidimensional cada linha pode ter um número diferente de colunas? Porque?
Obrigado.
Em um array bidimensional cada linha pode ter um número diferente de colunas? Porque?
5 Respostas
Cite exemplos? Coloque um caso real, fica mais fácil de entender!
Os arrays são objetos, não tipos primitivos, portanto você pode fazer algo como:
int[] array1 = null;
int[] array2 = new array[2];
Percebes o new? Você está alocando memória quando instancia um array. No caso dos inteiros, o array é inicializado com um monte de zeros, assim:
[0, 0]
Quando você diz int[], você está criando um array que, em suas posições, contem primitivos do tipo int. Algo que também podemos fazer é criar um array de objetos de qualquer classe. Por exemplo podemos fazer:
Object[] meuArrayDeObjetos = new Object[5];
Isso cria um array que tem 5 espaços para Objects. Mas o que é que existe incialmente em cada uma das posições? Se você verificar, vai ver que esse array basicamente é:
[null, null, null, null, null]
Quando você cria um int[][], por exemplo, está criando um array que contem arrays, e esses arrays contidos no primeiro, por sua vez, contem inteiros.
É só ler ao contrário, [] de [] de int.
Mas pera, a gente não concordou que arrays são objetos? Você acertou se deduziu que um int[][] é inicializado com nulls 
int[][] meusArrays = new array[4][];
resulta em
[null, null, null, null]
A gente pode atribuir qualquer objeto do tipo int[] dentro da variável meusArrays! (incluindo ponteiros nulos e arrays de tamanhos diferentes).
Exemplos:
meusArrays[0] = null;
meusArrays[1] = new int[]{1, 2, 3, 4, 5};
meusArrays[2] = new int[2];
meusArrays[3] = meusArrays[1];
Não existe conceito de matriz em java, mas podemos simulá-las assim:
int tamanho = 10;
int[][] matriz = new int[tamanho][];
for(int i = 0; i < tamanho; i++) {
matriz[i] = new int[tamanho];
}
Dessa forma, uma “matriz” 10x10 e criada, mas é só uma das muitas formas de utilização de arrays multi-dimensionais.
Espero que tenha dado para entender! Qualquer coisa comenta aí que a gente se ajuda!
Em um array bidimensional? Sim!
Veja:
int mat[][] = {{123}, {1, 2, 3}};
Entendeu? Não?
String[] mat[] = {{"A", "Novo", "Teste"}, {"A"}};
Não só nos bi-dimensionais, mas também nos N-dimensionais. Java não possui um tipo de dado que representa uma matriz. Matrizes são representadas através de um array de arrays, então, para representar uma matriz, você implementa usando a mesma quantidade de elementos para todos os arrays inseridos.
Talvez assim fica mais fácil de entender:
// assim vai equivaler à uma matriz, pois array1, array2, e array3 tem a
// mesma quantidade de elementos
int[] array1 = new int[] { 1, 2, 3 };
int[] array2 = new int[] { 4, 5, 6 };
int[] array3 = new int[] { 7, 8, 9 };
int[][] matriz = new int[][] {
array1,
array2,
array3
};
// assim é somente um array bi-dimensional onde cada elemento da
//segunda dimensão tem um tamanho diferente
int[] array1 = new int[] { 1 };
int[] array2 = new int[] { 2, 3, 4 };
int[] array3 = new int[] { 5, 6 };
int[][] matriz = new int[][] {
array1,
array2,
array3
};
Obrigado!