¿Por qué Java no tiene un tipo primitivo para Cadena cuando la mayoría de los otros tipos de datos lo hacen?¿Por qué no hay ningún tipo primitivo para Cadena?
Respuesta
Cadena es un objeto, no es un tipo primitivo en absoluto, solo una matriz de caracteres. La razón por la cual existen tipos primitivos en Java en absoluto es interesante, extracto de a James Gosling interview:
Bill Venners: ¿Por qué hay primitiva tipos en Java? ¿Por qué no era todo solo un objeto?
James Gosling: Totally a efficiency thing. Hay todo tipo de personas que han construido sistemas donde ints y que son todos objetos. Hay una variedad de maneras de hacer eso, y todos tienen algunos problemas bastante graves . Algunos de ellos son lentos, porque asignan memoria para todo. Algunos de ellos intentan hacer objetos donde a veces son objetos , a veces no son (lo que es lo que hizo el sistema LISP estándar), y entonces las cosas se ponen realmente raras. Es tipo de obras, pero es extraño.
Simplemente haciendo que haya objetos primitivos y, y simplemente son diferentes. Resuelves muchos problemas
En resumen, los tipos primitivos existen por razones de eficiencia.
+1 - Y el corolario es que String no es primitivo porque hacerlo primitivo no lo haría más eficiente. –
¡Una muy buena razón para tener tipos primitivos! Seguro que ahorra tiempo para hacer una int que perder unos preciosos segundos (aproximadamente 10) creando una instancia 'Integer foo = new Integer (aValueFoo);'. Sería complicado ver 'Integer foo Integer foo Integer foo Integer foo ...' alineando su código en mi opinión. Integer tiene sus usos cuando se trata de cosas más grandes que hacer con enteros ... ¡los primitivos son una bendición! –
La mayoría de los lenguajes de programación no consideran una cadena primitiva porque en realidad es una matriz de caracteres. Los tipos primitivos casi siempre tienen un tamaño fijo.
Debo decir que algunas personas podrían considerar que String es "primitivo" porque está incorporado. Pero no es primitivo en el sentido de ser un tipo básico en comparación con un tipo compuesto. Como una cadena es una matriz de caracteres, es un tipo compuesto.
¿Algún idioma lo considera un primitivo? ¿Una longitud fija en la memoria hará que sea uno? – Jeff
Por extraño que parezca, en Javascript la cadena es primitiva. Puede tener una longitud de memoria fija ya que es inmutable. –
int, char, float, double, etc. Todos tienen una longitud fija en la memoria. p.ej. un int tiene 4 bytes, por lo tanto, 32 bits.
pero una cadena puede tener una longitud diferente, en realidad es una matriz de caracteres.
Bueno, eso es más que una razón para decir por qué debería ser un tipo de objeto (es decir, una clase) y no un tipo de valor (es decir, una estructura): la pregunta es, ¿por qué no es una primitiva? - En Java, ¿están todos los tipos de valores primitivos? - ¿No hay estructuras en Java? – BrainSlugs83
La ÚNICA respuesta lógica a una pregunta directa: debido a problemas de asignación de memoria. un tipo int o un tipo float requiere un tamaño de memoria específico, pero una cadena (lo sentimos, String) tiene una longitud variable formada por una longitud de memoria indeterminada (en tiempo de declaración). Período. Muchas gracias! – user3285866
- 1. ¿Por qué usar = para inicializar un tipo primitivo en C++?
- 2. Entero como tipo primitivo
- 3. ¿Por qué no hay ningún hilo ligero real para Python?
- 4. por qué no hay ningún vector para encontrar en C++
- 5. heroku: "no hay ningún tipo de trabajador"
- 6. Java: copiar matriz de tipo no primitivo
- 7. ¿Hay una biblioteca para comparar valores de tipo primitivo?
- 8. ¿Por qué no hay ningún algoritmo std :: copy_if?
- 9. ¿Volátil o sincronizado para el tipo primitivo?
- 10. ¿Por qué no hay ningún atributo css de dimensión?
- 11. ¿Es String un tipo primitivo?
- 12. No se puede invocar toString() en el tipo primitivo int
- 13. Objeto o tipo primitivo
- 14. ¿Por qué no hay un tipo entero sin tamaño?
- 15. universal Analizar Tipo primitivo en C#
- 16. ¿Con qué propósito Java tiene un tipo primitivo flotante?
- 17. ¿Por qué no hay ningún archivo de configuración para la inyección de dependencia con Google Guice?
- 18. ¿Por qué no hay una función parcial tipo literal?
- 19. no hay ningún atributo "allowtransparency"
- 20. ¿Por qué no hay Xcode para Windows?
- 21. ¿Por qué no hay DirectX API para Linux?
- 22. ¿Por qué no hay Dictionary.TrimExcess()?
- 23. ¿Cómo paso un tipo de datos primitivo por referencia?
- 24. Por qué Lucene no es compatible con ningún tipo de actualización de un documento existente
- 25. C++ Los constructores no tienen ningún tipo de devolución. ¿Exactamente por qué?
- 26. LINQ: ¿Qué devuelve All() si no hay ningún elemento?
- 27. Verifique el tipo de campo primitivo
- 28. Datagrid: ¿No hay ningún evento ordenado?
- 29. ¿Por qué no hay std :: stou?
- 30. ¿Por qué no hay una función para cada miembro para cada tipo de colección en stl?
Ugh. Desearía que no hubiera primitivos para ser honesto contigo. – CookieOfFortune
Básicamente es la misma pregunta que hizo aquí: http://stackoverflow.com/questions/2099171/integer-as-primitve-type – David
¿De verdad quiso decir, por qué no hay un objeto de "valor-tipo" para la cadena en lugar del tipo primitivo? ? (es decir, ¿cómo se pone una cadena en la pila frente al montón?) – BrainSlugs83