2011-12-01 17 views
13

¿Por qué motivo de diseño no hay operador sizeof en java? sabiendo que es muy útil en C++ y C# y cómo se puede obtener el tamaño de un cierto tipo si es necesario?por qué no hay sizeof en java

+0

posible duplicado de [En Java, ¿cuál es la mejor manera de determinar el tamaño de un objeto?] (Http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way -to-determine-el-tamaño-de-un-objeto) –

+0

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

+0

las colecciones de pozos tienen el método .size() y las matrices y las cadenas tienen .length () ¿Necesitas bytes específicamente? – aishwarya

Respuesta

22

Porque el size of primitive types es explícitamente obligatorio por el lenguaje Java. No hay variación entre las implementaciones de JVM.

Además, dado que la asignación la realiza el operador new dependiendo de su argumento, no es necesario especificar la cantidad de memoria necesaria.

A veces sería conveniente saber cuánta memoria tomará un objeto para poder estimar cosas como los requisitos máximos de tamaño de pila, pero supongo que los diseñadores de Java Language/Platform no pensaron que era un aspecto crítico.

+0

chicos, lo mismo para C#. Creo que hay motivo de diseño –

+1

Es la consecuencia de un diseño. – nullpotent

+8

"La gente criticó su ausencia en Java" es la razón de diseño de muchas cosas en C#. – Affe

7

En c solo es útil porque tiene que asignar manualmente y liberar memoria. Sin embargo, dado que en Java hay recolección de basura automática, esto no es necesario.

+0

Hasta cierto punto ... – nullpotent

+0

Sé que a veces podría ser útil, pero, como señaló @maerics, probablemente los diseñadores no pensaron que era necesario agregarlo a las especificaciones del lenguaje. Todavía hay formas de conocer el tamaño de un objeto aunque, verifique uno de los comentarios de la pregunta para eso. – rabusmar

1

En Java, no trabajas directamente con la memoria, por lo que generalmente no es necesario sizeof, si aún quieres determinar el tamaño de un objeto, consulta this question.

0

C sizeof necesario debido a que el tamaño de enteros y anhela variarse dependiendo del sistema operativo y compilador. O al menos solía hacerlo. :-) En Java todos los tamaños, las configuraciones de bits (por ejemplo, IEEE 754) están mejor definidas.

EDITAR - Veo que @Maerics proporcionó un enlace a las especificaciones de Java en su respuesta.

Cuestiones relacionadas