¿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
Respuesta
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.
chicos, lo mismo para C#. Creo que hay motivo de diseño –
Es la consecuencia de un diseño. – nullpotent
"La gente criticó su ausencia en Java" es la razón de diseño de muchas cosas en C#. – Affe
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.
Hasta cierto punto ... – nullpotent
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
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.
gestión de memoria se realiza por la máquina virtual Java, tal vez esto podría ayudarle a: http://www.javamex.com/java_equivalents/memory_management.shtml
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.
- 1. ¿Por qué hay un operador sizeof ... en C++ 0x?
- 2. sizeof() estructuras desconocidas. ¿Por qué?
- 3. ¿Por qué sizeof (string) == 32?
- 4. ¿Por qué sizeof (void) == 1?
- 5. ¿Por qué sizeof (int) es diferente de sizeof (int *)?
- 6. ¿Por qué no puedo usar sizeof() en un #if?
- 7. ¿por qué sizeof (13.33) tiene 8 bytes?
- 8. ¿Por qué no hay interfaces finales en Java?
- 9. ¿Por qué no hay una variable estática local en Java?
- 10. ¿Por qué no hay literales binarios en Java?
- 11. ¿Por qué no hay interfaz Hashable en Java
- 12. ¿Por qué no hay byte o literales cortos en Java?
- 13. ¿Por qué no hay límite (float) en Java?
- 14. ¿Por qué sizeof parse struct members?
- 15. ¿Por qué es -1> sizeof (int)?
- 16. sizeof java object
- 17. ¿Qué hace sizeof?
- 18. Colecciones de Java. ¿Por qué no hay tipos primitivos?
- 19. ¿Por qué no hay Dictionary.TrimExcess()?
- 20. ¿por qué sizeof ('a') es 4 en C?
- 21. ¿Por qué no hay strtoi en stdlib.h?
- 22. ¿Por qué no hay isFocused() en GWT?
- 23. ¿Por qué no hay ReverseEnumerator en C#?
- 24. sizeof (int) == sizeof (void *)?
- 25. Operador sizeof C/C++: ¿Por qué sizeof ('a') devuelve valores diferentes?
- 26. ¿Por qué Java tiene una "NullPointerException" cuando no hay punteros en Java?
- 27. ¿Por qué llamar al operador sizeof con dos argumentos?
- 28. ¿Por qué se considera sizeof a un operador?
- 29. ¿Por qué no hay colecciones concurrentes en C#?
- 30. ¿Por qué sizeof (param_array) es el tamaño del puntero?
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) –
http://stackoverflow.com/questions/4115239/sizeof-java-object – birryree
las colecciones de pozos tienen el método .size() y las matrices y las cadenas tienen .length () ¿Necesitas bytes específicamente? – aishwarya