Dúvida básica na declaração do método main

Pessoal eu tenho lido muita coisa sobre java, estudado bastante, corrido átras de tutoriais e artigos mas uma coisa me chamou atenção e não vi uma explicação “clara” do porque isso ocorre…bom vamos a dúvida então:

Muitas vezes eu vejo declararem da seguinte forma:

public static void main (String args [])

Outras vezes vejo assim:

public static void main (String [] args)

Por que as vezes os ( [] ) são colocados após “String” e outras vezes após “args” ?

É a mesma coisa. Em java a declaração de arrays pode ser tanto assim:

int [] array;

como também

int array[];

Hmmm então os ( [] ) são referentes ao “args” certo ? indifere se eu colocar antes ou depois…certo ?

Sei que a dúvida é muito simples mas melhor perguntar do que ficar na dúvida ^^ sem contar que não tinha achado lugar algum que explicasse isso, ainda mais de uma forma tão simples e direta como a sua explicação

Os símbolos ‘[’ e ‘]’ indicam que a variável ‘args’ é um array de String.

Complementando a explicação, a partir da versão 1.5 do java, também é possível ter declaração do método main da seguinte forma.:

public static void main(String... args){ }

esses 3 pontinhus após uma classe, quer dizer que o parâmetro é um vararg.

e args é apenas o nome de uma variável, não precisa ser necessariamente args, pode ser o que você quiser, mas como uma boa prática de programação, usa-se args. :smiley:

[]'s

Galera muito obrigado por ter exclarecido minha dúvida de forma tão simples e completa ( com informações adicionais até ^^)

jhonatandarosa obrigado pela sua explicação pois essa forma de declaração eu não conhecia e agora que você falou de vararg fiquei curioso e já chei um link para ver o que é isso

Obrigado a todos =]

Dica de programação
Colocar os colchetes “[]” junto com o tipo, por exemplo:
String[] str;
e não String str[];
pois “[]” faz parte do tipo, e não do nome da variável, assim evita-se uma possível confusão.

Declaração de arrays são feitas usando o [] antes ou depois do nome da variável.

Em Java isso até gera um pouco de confusão, uma declaração de array de array de int, por exemplo, pode ser:

[code]int [][] param

int param [][]

int [] param [][/code]O último, por incrível que pareça, também é válido.

denada cara… varargs é bem legal :smiley:

agora falando especificamente sobre arrays.

não tem o menor problema em vc colocar os colchetes antes ou depois do nome da variável, mas ai vai mais uma dica. :wink:
vamos supor que você queira declarar 3 arrays do tipo int na mesma linha.

se você declarar dessa forma, com os colchetes antes dos nomes das variáveis.

int[] array1, array2, array3;

todas as 3 variáveis serão arrays.
porém, se você declarar depois do nome das variáveis, como por exemplo

int array1, array2, array3[];

apenas a variável array3 será de fato um array do tipo int, as outras duas serão apenas variáveis do tipo int.
para que as três variáveis fossem arrays, usando colchetes após nome das variáveis, deveria ser declarado desta forma.

int array1[], array2[], array3[];

basta ter atenção no que se está fazendo. Mas como uma boa pratica de programação, não recomenda-se declarar da segunda forma, ou da terceira. Se quiser economizar linhas, e declarar várias váriaveis em uma linha só, declare os arrays em uma linha, e as outras em outra linha. Respeite também os tipos, para não acontecer o seguinte:

int[] array1,array2; double[] array3;

:wink:

[]'s

Galera muito obrigado mesmo pelas respostas, tiraram todas as minhas dúvidas e muito mais =]

então resumindo… dessa forma (segundo a dica do “dionat4n” e as várias explicações do “jhonatandarosa”) :

public static void main (String [] args) -> seria a forma mais “elegante” ? (mesmo que onde vá os colchetes seja indiferente…)

Eu colocaria os colchetes juntos ao Tipo, senão parece que os colchetes estão perdidos.

Exemplo:
Tipo[] var;

E não:
Tipo [] var;

Muito menos:
Tipo var[];

Curiosidade: não tem nada a respeito de como declarar arrays no Code Conventions do Java.
http://java.sun.com/docs/codeconv/CodeConventions.pdf