Arrays

5 respostas
M
<versão do Java - 1.4.0_01>





Por que o exemplo abaixo (TArray1.java) não  erro de execução, nem mesmo quando não especifico nenhum parâmetro da linha de comando? se eu tentar acessar o length de um array vazio não deveria ser lançada uma NullPointerException?





public class TArray1 {


	public static void main (String[] args) {


		if (args.length != 0)


			System.out.println("tem parametros");


		else


			System.out.println("NAO tem parametros");


	}


}





Neste outro exemplo (TArray2.java), não importa se eu especifique ou não parâmetros de linha de comando ele sempre imprime "tem parâmetros". Se eu não passar nenhum argumento na linha de comando o array args não deveria ser null???





public class TArray2 {


	public static void main (String[] args) {


		if (args == null)


			System.out.println("NAO tem parametros");


		else


			System.out.println("tem parametros");


	}


}

5 Respostas

A

Marcio,

Lembre-se que length eh um atributo e nao metodo, neste caso voce estah apenas comparando se a propriedade do array eh diferente de um tipo primitivo, nao resultara em um nullpointer, pois voce nao estar usando um espaco de memoria que nao existe, agora, se voce tentar alocar algo em uma posicao deste array se o length dele for igual a zero, resultarah no seu nullpointer =)

M

Ok, isso explica o exemplo 1, mas no caso do exemplo 2, se eu não especificar nenhum parâmetro na linha de comandos o args não deveria ser null?

A

Claro que nao Marcio, pois voce esta recebendo como parametro um array, este objeto ate entao nao eh nulo, e para que ele entre na condicao de ==null, voce precisaria setar ele como null, atribuindo o valor = null, caso contrario, mesmo que voce apenas instancie um array e nao atribua algum valor, ele permanecera notnull, claro com o length sempre zerado, mas o espaco alocado em memoria nao sera null!

M

OK! entendido!

A

Se precisar!!

flw

Criado 18 de janeiro de 2003
Ultima resposta 18 de jan. de 2003
Respostas 5
Participantes 2