Vc pode criar arrays de qualquer coisa, desde os tipos primitivos até os tipos referência (que são os tipos representados pelas classes).
A sintaxe para criar um array é a mesma pra qualquer tipo.
int[] arrayDeInteiros;
char[] arrayDeCaracteres;
// Digamos que vc esteja criando um jogo com naves inimigas
Nave[] navesInimigas;
Uma coisa pra ficar atento é que há diferença entre declarar um array e criar um array.
No trecho acima eu apenas declarei aqueles arrays. Para criar de verdade eu preciso user o new
, assim:
int[] arrayDeInteiros = new int[10];
char[] arrayDeCaracteres = new char[10];
Nave[] navesInimigas = new Nave[10];
Notou o 10 entre colchetes? Ele especifica qual a capacidade do array, ou seja, a quantidade de elementos máxima que o array pode conter.
No exemplo eu criei arrays com capacidade para 10 elementos.
Depois da criação dos arrays vc precisa adicionar os elementos. Adicionamos elementos da seguinte forma:
arrayDeInteiros[0] = 1;
arrayDeInteiros[1] = 2;
arrayDeInteiros[2] = 3;
arrayDeInteiros[3] = 4;
arrayDeInteiros[4] = 5;
arrayDeInteiros[5] = 6;
arrayDeInteiros[6] = 7;
arrayDeInteiros[7] = 8;
arrayDeInteiros[8] = 9;
arrayDeInteiros[9] = 10;
navesInimigas[0] = new Nave();
navesInimigas[1] = new Nave();
navesInimigas[2] = new Nave();
/* e assim por diante... */
Os indices (os números entre colchetes) sempre começam em 0, o 0 representa a posição do primeiro elemento do array. No caso do meu array com capacidade para 10 elementos, a última posição é representada pelo indice 9.
Dependendo do caso, pode ser útil usar um loop pra fazer a inicialização.
for(int i = 0; i < navesInimigas.length; i++) {
navesInimigas[i] = new Nave();
}
Pra encher o array com dados vindos do usuário, vc faria algo como:
Scanner scan = new Scanner(System.in);
int[] numerosDaSorte = new int[3];
System.out.println("Entre com o primeiro número da sorte: ");
numerosDaSorte[0] = Integer.parseInt(scan.nextLine());
System.out.println("Entre com o segundo número da sorte: ");
numerosDaSorte[0] = Integer.parseInt(scan.nextLine());
System.out.println("Entre com o terceiro número da sorte: ");
numerosDaSorte[0] = Integer.parseInt(scan.nextLine());
Ou pra facilitar:
Scanner scan = new Scanner(System.in);
int[] numerosDaSorte = new int[3];
for(int i = 0; i < numerosDaSorte.length; i++) {
System.out.println("Entre com o " + (i + 1) + "° número da sorte: ");
numerosDaSorte[i] = Integer.parseInt(scan.nextLine());
}
System.out.println("Seus números são: ");
for (int i = 0; i < numerosDaSorte.length; i++) {
System.out.print(numerosDaSorte[i] + " ");
}
Arrays em Java tem tamanho fixo e isso quer dizer que se vc declara um array com capacidade para 10 elementos, vc nunca vai conseguir acrescentar mais elementos do que isso e, se tentar, uma exceção será lançada.
Se tentar algo como:
numerosDaSorte[3] = 123;
A exceção IndexOutOfBoundsException
será lançada. É bom ficar atento com isso porque já vi gente no fórum perguntando o que é esse “erro do Java”.
Este tipo de erro não é do Java, mas sim do próprio programador e significa puramente que vc informou que queria um array de tamanho x, mas está usando como se tive tamanho x + 1.
Fique atento às mensagens no console.
Acho que é isso o básico.
Não conheço livros pra indicar.