+m+ ha scritto:
Lo è perchè si tratta, ragionevolmente, di un vettore di elementi che sono memorizzati contiguamente, un vero array, altrimenti length, size e capacity non necessariamente sono sinonimi.
Non confondere gli array con le collezioni (in particolare quelle collezioni basate su array che lavorano a capacità più espansa rispetto al numero "logico" di elementi).
In Java se si istanzia un
array di lunghezza 10, vuol dire che la capacità è 10 ed ha quindi 10 elementi.
+m+ ha scritto:
Tornando alla domanda (di un tuo esempio) è relativa all'utilizzo di una variabile da parte della JVM (il che quindi non determina rallentamenti particolari durante l'esecuzione del ciclo), oppure di un metodo (il quale potrebbe - ma non nel caso di un array di interi ragionevolmente - "contare" in concreto gli elementi effettivamente presenti).
A livello di bytecode (ripeto, quello c'è e si vede nel .class) ogni volta che si referenzia unArray.length viene usata quella istruzione speciale apposita per ottenere la lunghezza dall'oggetto dell'array.
Poi cosa succeda quando il JIT (Just in Time) compiler traduce il bytecode nel codice macchina del processore fisico ... non lo so di preciso (sono dettagli molto avanzati ... non mi sono mai documentato più di tanto) ma fa sicuramente ragionamenti più "smart" di quanto si possa pensare.