Будучи новичком в Java, я путаюсь между понятиями class и типа.
Например, должен ли объект "Hello World!"
принадлежать типу String
или class String
? Или, может быть, оба?
Разница между классом и типом
Ответ 1
Класс - это тип. Интерфейс - это тип. Примитив - это тип. Массив - это тип.
Поэтому каждый тип также является классом (включая константу перечисления), интерфейсом, примитивом или массивом.
Существуют две различные категории типов: примитивные типы и ссылочные типы:
- Переменная примитивного типа всегда содержит примитивное значение того же типа. Такое значение может быть изменено только с помощью операций присваивания этой переменной.
- Переменная ссылочного типа всегда содержит значение ссылки на объект. Все объекты, включая массивы, поддерживают методы класса
Object
. Ссылочными типами являются типы классов (включая типы перечислений), типы интерфейсов и типы массивов.
Каждый кусок данных имеет тип, который определяет его структуру, а именно, сколько памяти он занимает, как он выложен, и что более важно, как вы можете взаимодействовать с ним.
Примеры примитивных типов:
-
int
-
float
-
char
-
boolean
Примеры типов классов:
Примеры типов интерфейсов:
Примеры типов массивов:
-
int[]
-
String[]
-
Integer[][][]
В принципе, все, что вы можете назвать переменной, имеет тип, а классы - это своего рода тип.
Дополнительная информация здесь: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html
Ответ 2
"Тип" - более инклюзивная категория. Переменные в Java могут иметь три типа типов: 8 "примитивных" типов, таких как int и float, интерфейсы и классы. Значения (в отличие от переменных) могут быть примитивными или экземплярами класса.
Ответ 3
"Тип" определяет "какой тип данных он"
Ex: "hello world" - это String → "hello world" - это тип String (String не является предитивным данным, отличным от int.. поэтому мы можем сказать, что "hello world" - это тип строкового класса)
10 - это int → 10 - целочисленный тип данных.