objeto - tipo comodin java
Diferencia entre clase y tipo (3)
Siendo nuevo en Java, estoy confundido entre los conceptos de clase y tipo . Por ejemplo, ¿debería el objeto "Hello World!"
pertenecen al tipo String
o class String
? ¿O tal vez los dos?
"Tipo" define "qué tipo de datos es"
Ej: "hello world" es una cadena -> "hello world" es String type (String no es un dato premectivo a diferencia de int ... entonces podemos decir "hello world" es un tipo de clase de cadena)
10 es un int -> 10 es un tipo de datos entero.
"Tipo" es la categoría más inclusiva. Las variables en Java pueden tener tres tipos de tipos: los 8 tipos "primitivos" como int y float, interfaces y clases. Los valores (a diferencia de las variables) pueden ser instancias primitivas o de clase.
Una clase es un tipo. Una interfaz es un tipo. Un primitivo es un tipo. Una matriz es un tipo.
Por lo tanto, cada tipo también es una clase (incluida una constante enum), una interfaz, una primitiva o una matriz.
Hay dos categorías distintas de tipos: tipos primitivos y tipos de referencia:
- Una variable de tipo primitivo siempre tiene un valor primitivo de ese mismo tipo. Tal valor solo se puede cambiar mediante operaciones de asignación en esa variable.
- Una variable de tipo de referencia siempre contiene el valor de una referencia a un objeto. Todos los objetos, incluidas las matrices, admiten los métodos de la clase
Object
. Los tipos de referencia son tipos de clase (incluidos los tipos enum), tipos de interfaz y tipos de matriz.
Cada pieza de datos tiene un tipo que define su estructura, es decir, la cantidad de memoria que ocupa, cómo se presenta y, lo que es más importante, cómo puede interactuar con ella.
Ejemplos de tipos primitivos:
-
int
-
float
-
char
-
boolean
Ejemplos de tipos de clase:
Ejemplos de tipos de interfaz:
Ejemplos de tipos de matriz:
-
int[]
-
String[]
-
Integer[][][]
Básicamente, todo lo que puede referirse como una variable tiene un tipo, y las clases son como un tipo.
Más información aquí: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html