¿Por qué hay un tipo primitivo para entero (int) aunque tenemos un objeto para entero como entero? Pero lo mismo no es con el tipo de cadena. No existe ese tipo primitivo para String. ¿Siempre String trata con la referencia del objeto?Entero como tipo primitivo
Respuesta
Velocidad. Es mucho más rápido para el código de máquina agregar dos int usando instrucciones de CPU nativas, en lugar de tener que tomar dos objetos de enteros, extraer los valores int de ellos, luego agregarlos, creando un nuevo objeto entero de resultados para contener el resultado. (how JNI maps primitives)
Las cadenas son complejas, tienen muchos métodos y, como tales, no tienen contrapunto de código de máquina. Ellos son promovidos a un verdadero Objeto. Además, un estado de Cadena comparte con otras Cadenas creadas con el mismo valor. Ningún valor primitivo comparte estado con otros valores primitivos como este. (immutable can be shared | primitive no sharing)
Un tipo de datos de cadena es considerablemente más complejo que un int - hay una cantidad variable de memoria para contener una cadena por una cosa.
Esto se debe a que los procesadores (CPU) tienen soporte directo para tipos enteros pero no para cadenas. Y por razones de rendimiento, Java admite algunos tipos nativos que es probable que sean compatibles con los procesadores en los que se puede ejecutar la JVM.
En última instancia, los cálculos se realizan en el lenguaje a nivel de máquina. Me pregunto qué hace la diferencia entre primitivos y objetos en términos de rendimiento. La respuesta elaborada será apreciada.
esto debería ser un comentario, no una 'respuesta' compita por favor el recorrido SO aquí: http://stackoverflow.com/tour –
- 1. Objeto o tipo primitivo
- 2. ¿Es String un tipo primitivo?
- 3. En Java, ¿se puede considerar "nulo" como un tipo primitivo?
- 4. Jackson deserializar a lo específico tipo primitivo
- 5. Verifique el tipo de campo primitivo
- 6. ¿Volátil o sincronizado para el tipo primitivo?
- 7. universal Analizar Tipo primitivo en C#
- 8. Java: copiar matriz de tipo no primitivo
- 9. ¿Hay una biblioteca para comparar valores de tipo primitivo?
- 10. Fortran: entero * 4 vs entero (4) vs entero (tipo = 4)
- 11. Anulación del manejo predeterminado de tipo primitivo en Json.Net
- 12. Tipo de datos escalar vs. primitivo: ¿son lo mismo?
- 13. No se puede invocar toString() en el tipo primitivo int
- 14. ¿Devuelve "nulo" en la función de tipo de retorno primitivo?
- 15. ¿Con qué propósito Java tiene un tipo primitivo flotante?
- 16. Encuentra dinámicamente la clase que representa un tipo Java primitivo
- 17. ¿Por qué no hay ningún tipo primitivo para Cadena?
- 18. ¿Cómo determinar el tipo primitivo de una variable primitiva?
- 19. Determinando si un Objeto es del tipo primitivo
- 20. Cambiar el valor de un tipo de datos primitivo envuelto
- 21. ¿Cómo paso un tipo de datos primitivo por referencia?
- 22. ¿Por qué usar = para inicializar un tipo primitivo en C++?
- 23. determinar el tipo complejo de un tipo primitivo utilizando la reflexión
- 24. VBA Fecha como número entero
- 25. ¿Es posible envolver un entero y llamarlo como un entero?
- 26. booleanos de adición (como número entero)
- 27. CXF - ¿Cómo declarar un atributo requerido y no primitivo?
- 28. ¿Cómo convertir un tipo definido por el usuario a un tipo primitivo?
- 29. Valor entero de tipo flotante en C
- 30. ¿Cómo determinar y verificar si un tipo en el ensamblaje es tipo personalizado o tipo primitivo usando reflexión en .NET?
También agregaría espacio. Menos espacio para almacenar un entero en la memoria, que un objeto completo con todas sus operaciones. – Alex