Parâmetro pela linha de comando. Dúvida FAIL hehehe

Pessoal, porque mesmo quando declaro um array no parâmetro main, eu não preciso inicializar ele, e quando eu crio um método qualquer e declaro um array qualquer também, eu preciso inicializá-lo se não da erro.
Por exemplo:

[code]class Teste {

public static void main(String[] args) {
	
	System.out.println(args[0]);
	System.out.println(args[1]);
	System.out.println(args[2]);
	
}

}[/code]Aqui no caso eu simplesmente passo os 3 parâmetros na linha de comando que vai ser impresso pra mim no prompt.

Mas agora quando faço isso:

[code]class Teste {

public static void main(String[] args) {
	
	String[] ar;
	ar[0] = "0";
	ar[1] = "0";
	ar[2] = "0";
	
	System.out.println(ar[0]);
	System.out.println(ar[1]);
	System.out.println(ar[2]);
}

}[/code] Aqui já como esperado da erro de compilação e diz que variável não foi inicializado.
Queria saber porque quando é no parâmetro do método main ou em outro parâmetro qualquer não é necessário inicializar?

[quote=javahunter]

Queria saber porque quando é no parâmetro do método main ou em outro parâmetro qualquer não é necessário inicializar?[/quote]

No caso do método main, a jvm inicializa o array pra você baseado nos argumentos que passar à classe principal, ex:

java Teste.java arg1 arg2 arg3 etc…

Repare que cada argumento após o nome do arquivo é separado por espaço, e é justamente isso que a jvm usa para inicializar o array args e preenchê-lo pra você.

Já nos casos de métodos normais, a lógica é que simplesmente você deve passar o array já inicializado.

Espero ter ajudado.

Ohh yeah, era isso.
valew!