Tengo curiosidad. ¿Por qué tengo que escribir String myStr
con una letra mayúscula mientras que escribo int aNumba
con una letra minúscula?¿Por qué el tipo Java "String" está escrito en mayúscula mientras que "int" no?
Respuesta
Porque int
es un tipo primitivo, no una clase, por lo tanto no es directamente comparable con String
. El tipo de clase correspondiente es Integer
, deletreado según la clase naming conventions.
pares similares de tipos primitivos y de clase son
¿Hay razones para usar una clase x sobre su primitiva correspondiente? – Tower
@rFactor Sí. Imagina que quieres una lista de int. No se puede hacer con la API Java estándar, ya que las primitivas no son subtipos de Object y, por lo tanto, no son aptas para genéricos, pero puede obtener ArrayList
Creo que también es necesario tener en cuenta que es fácil confundir String con un tipo primitivo, ya que en realidad es una clase MAGIC. Esto le da algunas propiedades (como tener literales) que de otro modo solo tienen los tipos primitivos. – Jasper
int
es un tipo de datos primitivo, String
deriva de Object
y es una clase.
porque int es un tipo primitivo mientras cadena es un tipo de objeto
Debido String
es una clase (es decir, un objeto) y int
no es
ver Java naming conventions para más informaciones sobre.
Por convención, los objetos Java han capitalizado nombres de primera letra (por ejemplo String), mientras que las primitivas tienen nombres en minúscula (por ejemplo, int, float, double, etc.)
tipos básicos de bajo nivel como byte
o integer
se nombran en minúsculas, y los objetos/clases de alto nivel se denominan mayúsculas (CamelCase). Así es como se diseñó Java.
Me uniré a la fiesta también: Todo es una convención.
Y gracias a la bondad:.
class billybobstype {
...
}
(Es todo convención No hay ninguna razón por la "Cadena" no podría haber sido "cadena", sin embargo, "int" es una palabra clave y algo más que un nombre de clase - de los cuales CamelCase es la convención pero no es un requisito - por lo que requeriría una modificación del compilador :-)
Editar: Como acotación al margen, C# tiene t La palabra clave 'string' (parte de la gramática del lenguaje) que es un alias para la clase 'System.String'. (C# también implementa 'int', 'long', etc.como alias de esta manera, pero puede hacerlo porque tiene un sistema de "tipo de valor" extensible mientras que la JVM solo considera/permite -para un pequeño conjunto discreto de "tipos de valor").
Es solo algo original Los diseñadores de Java nos impusieron :-)
La cadena en sí es una clase derivada de Object, mientras que int es una primitiva.
Su confusión probablemente proviene del hecho de que String se comporta de muchas maneras como una primitiva, de modo que tiene operaciones básicas que se pueden aplicar a ella, como la concatenación (+), y que no necesita ser importado.
La concatenación se debe a que es lo suficientemente fundamental como para aplicar esta operación adicional, aunque sea un tipo de objeto.
La razón por la que no necesita importarse, es por defecto que se importa el paquete java.lang
, del cual String es miembro.
Y dicen que Java "es fácil" ;-) –
para ser justos con Java, si tuviera que importar java.lang.Cadena o tenía que hacer concatenación como nueva Cadena ("myString"), append ("concat"), append ("concat"), hubiera sido mucho más tedioso. Y al convertirlo en un objeto, abre la capacidad de realizar llamadas a métodos, como charAt, indexOf, etc., cosas que damos por sentado, pero que probablemente no podrían pasar. Tengo que aceptar que los desarrolladores de Java obtuvieron este correcto. – Codemwnci
¡No puedo creer algunas de las respuestas a esta pregunta! La respuesta no pertenece a la convención, y si crees que esa es la respuesta, necesitas estudiar un poco más. int es un tipo primitivo mientras que String es una clase (ver la respuesta de Peter).
Una advertencia importante de la primitiva frente complejo está autoboxing:
http://download.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
Aquí está el tutorial de Java para las primitivas:
http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
La clase String es un caso especial, así:
http://www.javabeginner.com/learn-java/java-string-class
¡Lectura de personas!
Nadie dice nada para contradecir que int es primitivo y String no lo es. Sin embargo, la capitalización, que es el tema de esta pregunta, se debe a una convención. Ciertamente es legal crear una clase llamada 'cadena' en Java, pero la convención es que los nombres de las clases tienen el título en mayúscula y las primitivas no. – Yuliy
El punto, y por qué los comentarios de ti y de los demás no son válidos, se debe a que int no es una clase, por lo que estás comparando manzanas con naranjas (por lo tanto, primitivas vs. clases). La convención de capitalización SOLO SE APLICA A LAS CLASES, no a las primitivas, por lo tanto, es un punto discutible que no se aplica. – hisdrewness
- 1. Por qué El constructor ArrayAdapter <String> (new View.OnKeyListener() {}, int, String []) no está definido
- 2. ¿Por qué la 't' en Hash Table (Hashtable) en Java no está en mayúscula?
- 3. ¿Por qué CultureInfo.NativeName no siempre está en mayúscula?
- 4. openOrCreateDatabase (String, int, null) no está definido
- 5. ¿Por qué RAISERROR está mal escrito? ¿O no?
- 6. Leyendo datos de un Archivo mientras está siendo escrito en
- 7. ¿Por qué verdadero/falso está en mayúscula en Python?
- 8. Comprobando lo que está escrito en Java OutputStream
- 9. ¿Qué está escrito estáticamente en RPython?
- 10. Java: ¿Por qué no está ocurriendo el autoboxing aquí?
- 11. Qué bit está activado por un entero en Java
- 12. Obtener int de String, que también contiene letras, en Java
- 13. java: HashMap <String, int> no funciona
- 14. en qué idioma está escrito Asana?
- 15. ¿Qué es la lista [String ~ Int]?
- 16. ¿En qué idioma está escrito .NET Framework?
- 17. Java hacer, mientras que, mientras
- 18. ¿por qué no está (123 == 0123) en java?
- 19. Regex.MatchData que devuelve nulo: ¿por qué no Opción [String]?
- 20. Alguien sabe qué tumblr está escrito en
- 21. ¿Por qué el compilador Java no le gusta primitive int como tipo para los valores en HashMap?
- 22. ¿En qué idioma está escrito el lenguaje de programación Go?
- 23. ¿No se puede convertir implícitamente el tipo 'int?' a 'int'
- 24. ¿En qué idioma está escrito el compilador de F #?
- 25. ¿Por qué el tipo "int" nunca es igual a "nulo"?
- 26. ¿Por qué el suministro de stdin al subproceso.Popen hace que cambie lo que está escrito en stdout?
- 27. ¿Por qué ENUM es mejor que INT
- 28. Tipo de datos MySQL INT (11) mientras que UNSIGNED INT (10)?
- 29. No se puede invocar toString() en el tipo primitivo int
- 30. ¿Por qué es necesario String [] args en Java?
Parece ser un empate entre Peter y Bermuda, con ankou llegando tercero. Que carrera damas y caballeros. –
es porque Java no es un verdadero lenguaje OO pero (afortunadamente) un lenguaje híbrido que permite el uso de primitivas, que son lo suficientemente cercanas al metal (no muy diferente de C). Gracias a que Java es híbrido, podemos usar elementos como TIntIntHashMap de Trove que tienen un excelente rendimiento, a diferencia del API HashMap de API predeterminado {Integer, Integer} que es ** realmente ** muy cojo. – SyntaxT3rr0r
@Webinator No estoy de acuerdo. Compare el soporte primitivo limitado de Java con el soporte de tipo de valor universal de C# (se conceden advertencias y las personas sobreutilizan struct 'para rendimiento', pero se usa para representar uniformemente todos los tipos primitivos, es extensible y permite métodos [sin polimorfismo o extendiendo - pero permite métodos de extensión] a los tipos de valor definidos). O bien, considere Scala, que no expone directamente ningún tipo primitivo/valor (pero se compilará hasta las primitivas JVM según corresponda). "Necesitar TIntIntHashMap para el rendimiento" solo muestra qué tan débil es Java aquí. –