Instanciar vetor

Pessoal, nas opções baixo, existe alguma diferença na instanciação dos vetores:

Opção 1: char[] caracteres = new char[] {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’,‘I’,‘J’,‘K’,‘L’,‘M’,‘N’,‘O’,‘P’,‘Q’,‘R’,‘S’,‘T’,‘U’,‘V’,‘W’,‘X’,‘Y’,‘Z’};

Opção 2: char[] caracteres = ‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’,‘I’,‘J’,‘K’,‘L’,‘M’,‘N’,‘O’,‘P’,‘Q’,‘R’,‘S’,‘T’,‘U’,‘V’,‘W’,‘X’,‘Y’,‘Z’};

import java.util.Random;
import javax.swing.JOptionPane;

public class C0902Codigo {

public static void main (String[] args) {
char[] caracteres = new char[] {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’,‘I’,‘J’,‘K’,‘L’,‘M’,
‘N’,‘O’,‘P’,‘Q’,‘R’,‘S’,‘T’,‘U’,‘V’,‘W’,‘X’,‘Y’,‘Z’};

  String codigo = "";
  Random rdm = new Random();
  for (int i = 1; i<=32; i++) {
  	codigo += caracteres[rdm.nextInt(36)];
  }
  
  JOptionPane.showMessageDialog(null, codigo);
  System.exit(0);

}
}

Obrigado

Nos exemplos que vc deu não há diferença. Tanto faz.

char[] a = {'a', 'b', 'c'};
char[] b = new char[] {'d', 'e', 'f'};

Pois vc está declarando e inicializando o array ao mesmo tempo. Nos exemplos acima nem foi necessário especificar o tamanho dos arrays já que este tamanho é inferido com base na quantidade de elementos dentro das chaves.

Agora imagine que vc quer criar um array, mas não quer (ou não pode) inicializá-lo com os valores. Vc teria que especificar o tamanho desejado na criação e, depois adicionar valores a cada posição individualmente.

char[] c = new char[3];
// uma lógica qualquer aqui
c[0] = 'g';
c[1] = 'h';
c[2] = 'i';

Vc também poderia declarar um array, mas não instanciá-lo. Mais tarde, vc pode finalmente criá-lo.

char[] d;
// mais código aqui
d = new char[3]; // isso tá correto. Um array de char com 3 elementos
d = new char[] {'j', 'k', 'l'}; // tá correto. Um array de char já inicializado
d = new char[3] {'m', 'n', 'o'}; // erro. Ou vc coloca o tamanho entre os colchetes ou usa as chaves
d = {'p', 'q', 'r'}; // erro. Só é possivel usar esta notação durante a declaração do array, não depois que ele já vai declarado

Em resumo: Não há diferença quando se usa qualquer um durante a declaração do array, mas pode fazer diferença se vc ainda não sabe quais os valores que o array vai conter. Talvez vc saiba os valores; talvez só saiba o tamanho.

2 curtidas

Obrigadão. Bem detalhado. Testei aqui.

2 curtidas