Dúvida sobre declaração, criação e inicialização de a

6 respostas
S

O código:

é o mesmo que o código abaixo?

Ou seja:
x[0][0] = 3
x[0][1] = 4
x[0][2] = 5
x[1] = null

É isso?

6 Respostas

C

“Schuenemann”:
O código:

é o mesmo que o código abaixo?

Ou seja:
x[0][0] = 3
x[0][1] = 4
x[0][2] = 5
x[1] = null

É isso?

eu acho q sim! :roll:

F

Sim sao a mesma coisa sim ,
ambos soh possuem uma referencia de indice[0] que possue 3 elementos, isso eh possivel, mas nada em relacao ao segundo indice foi feito, inicializado, logo naum vc naum podera acessa-lo,
o java permite que para variavel de metodo, ou automatica, soh inicialize o primeiro indice do array, esse exemplo eh valido!

agora x[1] não eh null, vc simplesmente naum criou nenhuma referencia
e ele naum aponta pra null, vc nao pode acessar um indice que naum
foi criado, lembre-se disso. ira lancar uma excecao do tipo ArrayIndexOutOf… alguma coisa

pelo menos eu acho ! :roll:

F

ahh … sim … o q pode ser null eh o array em si no exemplo x poderia ser null, caso ela fosse um atributo de classe e nao fosse inicializado.

Ex.: int[][] x1;

poderia ser null , agora um indice q naum foi inicializado naum…

eh isso!

S

Sim, eu me referia ao 3º objeto array (que o x[1] deveria referenciar).

Valeu pessoal.

R

Os dois códigos não representam a mesma coisa!

Concordo que no primeiro: int[][] x = { {3, 4, 5} }; o segundo array não foi criado e por este motivo ocorre uma exceção quando tentamos acessá-lo.

No entanto, no segundo código: int[][] x = { {3, 4, 5}, {} }; o segundo array foi instanciado vazio. Assim x[1].length = 0;

A referência ao segundo array seria igual a null se a expressão fosse assim: int[][] x = int[2][];

S

Putz, verdade.
Pro primeiro caso, x[1].length gera ArrayIndexOutOfBoundsException.
No segundo, retorna 0.

Criado 18 de fevereiro de 2005
Ultima resposta 19 de fev. de 2005
Respostas 6
Participantes 4