Qual é o certo e porque?

Pessoal começando a estudar JAVA já de cara tive uma dúvida e sei que posso contar com a sapiência do mestres para dirimir minha dúvida.

No livro Java Como Programar da Deitel tenho o seguinte código:

public class BemVindo { public static void main(String args[]) { System.out.println("Bem vindo ao JAVA!"); } }

E no livro Core Java 2 tenho o seguinte código:

public class BemVindo { public static void main(String[] args) { System.out.println("Bem vindo ao JAVA!"); } }

Todo os dois não dão erro de compilação e funcionam, mas qual deles é o certo e porque?

Obrigado,

Druid®.

As 2 formas são corretas apenas são formas diferentes de declarar um array. String [] teste ou String teste [] .

Obrigado pela resposta amigo :).

Druid®

E a partir do Java 5 há ainda uma terceira forma correta:

public class BemVindo { public static void main(String ... args) { System.out.println("Bem vindo ao JAVA!"); } }

Sintaticamente os dois são certos, como já ficou bem esclarecido nas respostas.
Já do ponto de vista de estilo, existe um que costuma ser considerado mais “certo”, é o String[] args

Veja:

int myvalue; String someString; String[] manyStrings; String otherStrings[];
Na linha 3 está mantido o padrão das duas primeiras, que é: No lado esquerdo fica a declaração de tipo da variável, no direito o nome. Você bate o olho no lado esquerdo e vê que o tipo é um Array de String.
Já a linha 4 tem essa quebra, o tipo não está totalmente definido do lado esquerdo. A leitura fica meio “Uma variável tipo String chamada otherStrings, ops, peraí, é um array”

Pessoal muito obrigado pelas respostas, muito elucidativas e completas, eu diria que foram bem didáticas as respostas :).

Abraço,

Druid®.

Sintaticamente os dois são certos, como já ficou bem esclarecido nas respostas.
Já do ponto de vista de estilo, existe um que costuma ser considerado mais “certo”, é o String[] args

Veja:

int myvalue; String someString; String[] manyStrings; String otherStrings[];

Na linha 3 está mantido o padrão das duas primeiras, que é: No lado esquerdo fica a declaração de tipo da variável, no direito o nome. Você bate o olho no lado esquerdo e vê que o tipo é um Array de String.
Já a linha 4 tem essa quebra, o tipo não está totalmente definido do lado esquerdo. A leitura fica meio “Uma variável tipo String chamada otherStrings, ops, peraí, é um array”[/quote]

A linha 4 foi incluída pois a Sintaxe do Java foi copiada do C. Em C, é possível fazer isso aqui:

String x, y[10], z*, k[20];

Onde x é uma String, y é um array de Strings de 10 posições, z é um ponteiro para uma String e k é outro array de 20 posições. Por isso, em C, o símbolo fica associado a variável e não ao tipo.

No Java, optou-se por mover para a frente pois String[] sempre significa o tipo “array de Strings”. Não é possível criar na mesma linha um array e uma String livre. Em C#, somente a forma String[] x é válida.