Argumento na linha de comando

galera quando eu passo um argumento na linha de comando assim:

	public static void main(String... args) {
		System.out.println(args[0]);
		int x = 0;
	}

Eu tenho um ArrayIndexOutOfBoundException, que significa que não existe esse índice !

quando eu faço assim:

	public static void main(String... args) {
		System.out.println(args.length);
		int x = 0;
	}

Ele me retorna 0. A dúvida é a seguinte:

Se posso chamar um método desse array então esse foi instânciado !
Quando um array de objetos é instânciado, todos os seus elementos recebem
valores padrão para o tipo do array.

Porque ele não imprime null na primeira imagem?

e porque não dá um NullPointer aqui ???

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

Quando ele retorna 0 eh porque tem 0 elementos…

quando vc tenta fazer args[0] vc ta pegando o PRIMEIRO elemento, por isso da erro.

Caso vc quizer usar os argumentos, vc pode testar antes com um

args.length == 0

args tem tamanho 0, por isso não dá NullPointer.