Introdução: por que essa pergunta incomoda até desenvolvedores Java experientes?
\n\nSe você já pesquisou no Google "How do I declare and initialize an array in Java?", você não está sozinho. Esta pergunta no Stack Overflow acumulou centenas de milhares de visualizações e continua crescendo. Parece simples, não? Mas o diabo, como sempre, está nos detalhes. Java é uma linguagem com tipagem forte, e a sintaxe de arrays pode confundir iniciantes.
\n\nNeste artigo, vamos analisar todas as formas possíveis de declarar e inicializar arrays em Java. Você aprenderá a diferença entre int[] arr e int arr[], como criar arrays de objetos corretamente e como evitar a armadilha do NullPointerException. Vamos lá!
1. Básico: o que é um array em Java?
\n\nUm array em Java é um contêiner que armazena um número fixo de elementos do mesmo tipo. Ao contrário de Python ou JavaScript, onde os arrays podem ser dinâmicos, em Java o tamanho do array é definido na criação e não pode ser alterado.
\n\nint[] numbers; // declaração (declaration)\nnumbers = new int[5]; // inicialização (initialization) — alocação de memória para 5 elementos\n\n\nNa primeira linha, dizemos ao compilador: "Quero criar uma variável que fará referência a um array de números inteiros". Na segunda, alocamos memória para 5 elementos. Só depois disso o array está pronto para uso.
\n\n2. Formas de declarar um array
\n\nEm Java, existem duas sintaxes para declarar um array. Ambas são válidas, mas a comunidade Java (e os padrões oficiais de codificação da Oracle) recomenda a primeira opção.
\n\nForma 1: tipo de dado + colchetes antes do nome da variável
\nint[] myArray;\nString[] names;\ndouble[] prices;\n\n\nForma 2: colchetes após o nome da variável (estilo C/C++)
\nint myArray[];\nString names[];\ndouble prices[];\n\n\nQual escolher? A primeira opção é mais natural de ler: int[] myArray — "array de números inteiros chamado myArray". A segunda opção pode causar confusão, especialmente ao declarar várias variáveis em uma única linha:
int[] arr1, arr2; // ambas as variáveis são arrays\nint arr3[], arr4; // arr3 é um array, arr4 é um número inteiro comum (erro!)\n\n\nPortanto, sempre use tipo[] nome.
3. Inicialização de array: 4 formas comprovadas
\n\nApós a declaração, o array precisa ser inicializado. Veja como fazer isso corretamente.
\n\nForma 1: Criando um array vazio com tamanho especificado
\nint[] numbers = new int[10]; // array de 10 elementos, todos iguais a 0 (padrão)\nString[] words = new String[5]; // array de 5 strings, todas iguais a null\n\n\nEsta forma é adequada se você planeja preencher o array posteriormente (por exemplo, em um loop). É importante lembrar: para tipos numéricos, os valores padrão são 0, para boolean é false, para tipos de referência é null.
Forma 2: Inicialização com literal de array
\nint[] numbers = {1, 2, 3, 4, 5};\nString[] fruits = {"apple", "banana", "orange"};\n\n\nEsta é a forma mais curta e conveniente quando você já conhece todos os elementos. Observe: essa sintaxe funciona apenas na declaração.
\n\nForma 3: Array anônimo (sem nome de variável)
\nint[] numbers = new int[]{1, 2, 3, 4, 5};\n\n\nEsta opção é útil quando você precisa passar um array para um método sem criar uma variável separada:
\n\nprintArray(new int[]{10, 20, 30});\n\n\nForma 4: Inicialização através de loop
\nint[] squares = new int[10];\nfor (int i = 0; i < squares.length; i++) {\n squares[i] = (i + 1) * (i + 1);\n}\n\n\nIdeal para preenchimento dinâmico, por exemplo, calculando valores ou lendo dados de um arquivo.
\n\n