PDA

View Full Version : [JAVA] Stranezza dichiarazione array di object


DvL^Nemo
21-11-2006, 15:44
Ho creato un array di oggetti del tipo

Object pippo[]=new Object[7];

Andando in debug ( mi dava ArrayIndexOutOfBound quando andavo sull'elemento in posizione 7 ) mi sono reso contro che in realta' l'array era solo di dimensione 6

Poi ho provato

Object[] pippo=new Object[7];

In questo caso l'array era di dimensione 7

La versione che ho utilizzato di Java e' la 1.5.0_01

lovaz
21-11-2006, 15:46
Le notazioni sono equivalenti...

comunque e' normale, in un array di dimensione 7 l'indice puo'
andare da 0 a 6.

DvL^Nemo
21-11-2006, 15:49
Allora, non mi sono fatto capire..

Nel primo caso l'array risultava essere di dimensione 6
Nel secondo caso l'array risultava essere di dimensione 7

Che poi gli indici vadano da 0 a 6 e' scontato..

Nel primo caso gli indici erano da 0 a 5
Nel secondo da 0 a 6

Insomma c'e' qualcosa che non va !

Ciao !

Andrea16v
21-11-2006, 15:52
Prova a cambiare compilatore e a vedere cosa succede, la notazione giusta è la seconda, anche la prima viene accettata ma, per quanto ne so, dovrebbe essere trasformata nell'altra a tempo di compilazione..

lovaz
21-11-2006, 15:57
hai parlato di elemento in posizione 7, mi sono confuso...

comunque intendi dire che se stampi pippo.length ti da' 6 nel primo caso
e 7 nel secondo?

PGI-Bis
21-11-2006, 16:10
Per quanto ne so non è mai stato aperto un bug al riguardo dai tempi di Java 1.1. E una bizzarria tanto grande non sarebbe certo passata inosservata. Le notazioni:

Object pippo[]

e

Object[] pippo

sono equivalenti benchè convenzionalmente si preferisca la prima a sottolineare visivamente che il tipo di pippo non è Object.class ma Object[].class.

O hai riassegnato il riferimento all'array iniziale ad uno di lunghezza inferiore o il debugger che usi introduce dei bug quando non ce ne sono.

DvL^Nemo
21-11-2006, 20:36
hai parlato di elemento in posizione 7, mi sono confuso...

comunque intendi dire che se stampi pippo.length ti da' 6 nel primo caso
e 7 nel secondo?

Si scusa, rileggendolo adesso non e' che si cpisca gran che cmq il senso e' quello..
Ciao !