Solo una domanda semplice, ma perché length
in un array non incapsulato? È solo per i principianti in programmazione perché ritengo che un metodo getLength()
sia facile da implementare.Lunghezza negli array
risposta
Ho un'ipotesi ma non posso dire che questo sia il motivo per cui i progettisti di java lo hanno fatto in quel modo.
Una matrice è un contenitore (e un oggetto ovviamente) con una lunghezza fissa. Ed è molto semplice, quindi l'incapsulamento in questo caso sarebbe bello ma non critico. Date un'occhiata ad ArrayList per esempio, che può essere considerato come un incapsulamento di un array.
Un array di base ha molti vantaggi rispetto ad altri tipi che lo incapsulano. E così forse quando è uscita la prima versione di Java, mancava la maggior parte dell'ottimizzazione che ha oggi. Quindi avere una struttura dati con la semplicità (in termini di prestazioni) di un array è una buona cosa.
Inoltre potrebbe essere semplice come che non ha ancora pensare che in quel momento e poi hanno dovuto mantenere una compatibilità all'indietro :)
In ogni caso, se si trova roba interessante che (forse si potrebbe email sole/oracolo) per favore posta! Questa è una bella domanda.
Sebbene gli array possano essere interpretati come oggetti, sono in realtà solo un insieme fisso di indirizzi di memoria contenenti qualche altro oggetto o variabile. In questo modo, hanno gli attributi, come ad esempio .length
, ma non necessariamente metodi, come .getLength()
Un sacco di informazioni su array possono essere trovate qui: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
'[citazione necessaria]' – delnan
Questa spiegazione non regge. In effetti, gli array hanno 'Object' come loro superclasse implicita, e quindi hanno un sacco di metodi. Ne consegue che i designer Java * potevano * aver definito un metodo 'length()' per tutti gli array. (Il fatto che un programma applicativo non possa aggiungere metodi non è rilevante qui.) –
Quello sarebbe facile da implementare, ed è per questo non è implementato.
Gli array sono semplicemente blocchi di archiviazione, senza controlli reali. Consentono un metodo di archiviazione facile e veloce per quando non sono richiesti controlli avanzati.
È possibile utilizzare elementi quali elenchi, code, elenchi concatenati, doppi elenchi collegati ecc. Che possono conservare un record delle loro dimensioni, se necessario. Ovviamente, a seconda della lingua che stai utilizzando, potresti doverli creare tu stesso.
Se si desidera avere una lunghezza di array e utilizzare ancora un array semplice, è possibile aggiungere 1 a una variabile di conteggio ogni volta che si aggiunge qualcosa e meno uno ogni volta che si rimuove qualcosa. Questo eseguirà la stessa funzione di un metodo getLength().
Cosa? La lunghezza * è * memorizzata, semplicemente non viene esposta attraverso un metodo getter ma attraverso un membro pubblico. – delnan
- 1. Interfacce automatiche implementate negli array
- 2. Lunghezza array con puntatori
- 3. Array Lunghezza in Java
- 4. Lunghezza array JSON
- 5. Lunghezza array errata
- 6. Imposta proprietà Lunghezza array
- 7. Array di lunghezza variabile
- 8. Ricerca di dati sovrapposti negli array
- 9. Vectorize aggiunta iterativa negli array NumPy
- 10. Copia array di byte negli appunti
- 11. Ottenere la lunghezza di array di stringhe di lunghezza sconosciuta
- 12. byte [] array a struct con array a lunghezza variabile
- 13. Unire 2 Array di diversa lunghezza
- 14. Array di lunghezza variabile C++ nella struttura
- 15. javascript lunghezza array associativo utilizzando jQuery
- 16. Calcolare JSONB Array Lunghezza Utilizzando PostgreSQL 9.4
- 17. Notifica personalizzata: java.lang.RuntimeException: lunghezza array errata
- 18. Controllo Lunghezza multidimensionali Gli array JavaScript
- 19. VBA lunghezza array (non UBound o onerror!)
- 20. matrice malloced VS. array a lunghezza variabile
- 21. Ottenere la lunghezza di un array 'denominato'?
- 22. lunghezza e lunghezza() in Java
- 23. Devo usare Hypens, Underscore o camelCase negli array php?
- 24. PHP: utilizzo degli spazi negli indici di array associativi
- 25. utilizzando Linq per partizionare i dati negli array
- 26. Individuazione della posizione di un valore negli array PostgreSQL
- 27. Trova l'elemento intermedio negli array uniti in O (logn)
- 28. Gli array di lunghezza variabile a lunghezza zero sono consentiti/ben definiti?
- 29. Rif. C#: come ottenere valori e lunghezza di un array?
- 30. PHPDoc per array di argomenti a lunghezza variabile
correlati: http://stackoverflow.com/q/9297899/697449 –
Vota per riaprire. IMO, questo NON è un duplicato della domanda collegata. Questa domanda spiega perché i designer Java non hanno ** incapsulato ** il campo 'length'. (La domanda collegata riguarda la coerenza delle API degli array rispetto alle stringhe ... il che è un problema significativamente diverso.) –
Inoltre, è (IMO) e ** interessante ** domanda, e degno di rispondere. –