2011-10-09 19 views
9

Más precisamente, ¿es una parte de la clase Integer (una versión reducida o algo así) o es algo completamente diferente?¿Es un objeto int en Java?

Soy consciente de que int es un tipo de valor y entero es un tipo de referencia, pero ¿int hereda de Object de todos modos?

(Estoy asumiendo que, en este sentido, int, long, boolean, etc. son todos similares. Int fue elegido simplemente por conveniencia)

Respuesta

16
  • Los tipos básicos en Java no son objetos y no heredan de Object.

  • Desde que Java 1.5 introdujo el boxeo automático permitido entre int y Entero (y los otros tipos).

  • Debido enteros no son objetos que no pueden ser utilizados como parámetros de tipo genérico, por ejemplo, la T en list<T>

0

Los tipos primitivos no son objetos, sino que se almacenan directamente en cualquier contexto que se necesitan . Si necesitan ser tratados como un objeto, se pueden incluir en un Entero.

+0

¿Está diciendo object = reference type? – soandos

+0

@soandos: sí. Todas las instancias de clase en Java son tipos de referencia. – siride

1

Si se habla de Entero:

clase El entero se ajusta un valor de tipo int primitivo en un objeto. Un objeto de tipo entero contiene un solo campo cuyo tipo es int.

Además, esta clase proporciona varios métodos para convertir un int a un String y un String a un int, así como otras constantes y métodos útiles cuando se trata de un int.

int no es objeto, es un tipo primitivo.

+0

Entonces, ¿no hereda del objeto? – soandos

+0

@soandos: hereda de * nada *. No puede heredar el período ya que los primativos no son tipos de referencia. Esto es similar a los tipos simples de C#. –

+0

En otros idiomas las estructuras pueden heredar, por lo que el mero hecho de que sea una primitiva no es suficiente – soandos

16

De "Primitive Data Types": "Los tipos primitivos son los tipos de datos especiales incorporados en el lenguaje, sino que son no objetos creados a partir de una clase ". Eso, a su vez, significa que no, int no hereda de java.lang.Object de ninguna manera porque solo "objetos creados a partir de una clase" hacen eso. Considere:

int x = 5; 

Para que la cosa nombrada x para heredar del objeto, lo que tendría que tener un tipo. Tenga en cuenta que estoy distinguiendo entre x y lo que nombra. x tiene un tipo, que es int, pero la cosa llamada x es el valor 5, que no tiene ningún tipo de tipo en sí mismo. No es más que una secuencia de bits que representa el valor integral "5". Por el contrario, considerar:

java.lang.Number y = new java.lang.Integer(5); 

En este caso, y tiene el número de tipo, y la cosa nombrada y tiene el tipo entero. La cosa llamada y es un objeto. Tiene un tipo distinto independientemente de y o cualquier otra cosa.

+1

+1 por molestarse en encontrar una referencia – mikek3332002

+0

Tengo una duda: ¿puede un método, cuyo tipo de devolución es un 'Objeto', devolver' int'? Si es así, entonces, ¿cómo puedo recuperar el 'int' de' Object' en el entorno de llamada? –

+0

@KaranChadha Debe publicar esto como una nueva pregunta en lugar de un comentario. Sin embargo, asegúrate de verificar si ya se ha hecho la misma pregunta antes. –

Cuestiones relacionadas