2011-12-01 22 views
13

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

+0

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) –

+0

http://stackoverflow.com/questions/4115239/sizeof-java-object – birryree

+0

le collezioni well hanno il metodo .size() e gli array e string hanno .length (). hai bisogno di byte in particolare? – aishwarya

risposta

22

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.

+0

ragazzi, lo stesso per C#. Penso che ci sia un motivo di design –

+1

È la conseguenza di un progetto. – nullpotent

+8

"La gente ha criticato la sua assenza in Java" è la ragione del design per molte cose in C#. – Affe

7

In c è utile solo perché è necessario allocare manualmente e liberare memoria. Tuttavia, poiché in Java è disponibile la garbage collection automatica, non è necessario.

+0

Fino a un certo punto ... – nullpotent

+0

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

1

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.

0

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.