Em um array bidimensional cada linha pode ter um número diferente de colunas? Porque?
Obrigado.
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!