Per quale motivo di progettazione non esiste un operatore sizeof in java? sapendo che è molto utile in C++ e C# e come si può ottenere la dimensione di un certo tipo se necessario?perché non c'è sizeof in java
risposta
Perché il size of primitive types è esplicitamente richiesto dal linguaggio Java. Non c'è differenza tra le implementazioni JVM.
Inoltre, poiché l'assegnazione viene eseguita dall'operatore new
in base all'argomento, non è necessario specificare la quantità di memoria necessaria.
Sarebbe certo conveniente a volte di sapere quanta memoria di un oggetto vi porterà così si potrebbe stimare le cose come requisiti massimi dimensione heap, ma suppongo che i progettisti/piattaforma Java di lingue non hanno pensato che fosse un aspetto critico.
ragazzi, lo stesso per C#. Penso che ci sia un motivo di design –
È la conseguenza di un progetto. – nullpotent
"La gente ha criticato la sua assenza in Java" è la ragione del design per molte cose in C#. – Affe
In c è utile solo perché è necessario allocare manualmente e liberare memoria. Tuttavia, poiché in Java è disponibile la garbage collection automatica, non è necessario.
Fino a un certo punto ... – nullpotent
So che a volte potrebbe essere utile, ma, come ha sottolineato @maerics, probabilmente i progettisti non pensavano fosse necessario aggiungerlo alle specifiche del linguaggio. Esistono ancora modi per conoscere le dimensioni di un oggetto, quindi controllare uno dei commenti della domanda. – rabusmar
In Java, non si lavora direttamente con la memoria, quindi di solito non è necessario sizeof
, se si desidera determinare la dimensione di un oggetto, controllare this question.
La gestione della memoria è fatto dal VM in Java, forse questo potrebbe aiutare: http://www.javamex.com/java_equivalents/memory_management.shtml
C necessaria sizeof perché la dimensione di int e long varia a seconda del sistema operativo e compilatore. O almeno lo era. :-) In Java tutte le dimensioni, le configurazioni di bit (ad es. IEEE 754) sono meglio definite.
EDIT - Vedo che @Maerics ha fornito un collegamento alle specifiche Java nella sua risposta.
possibile duplicato di [In Java, qual è il modo migliore per determinare la dimensione di un oggetto?] (Http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way -per-determinare-la-dimensione-di-un-oggetto) –
http://stackoverflow.com/questions/4115239/sizeof-java-object – birryree
le collezioni well hanno il metodo .size() e gli array e string hanno .length (). hai bisogno di byte in particolare? – aishwarya