Подтвердить что ты не робот

Разница между классом и типом

Будучи новичком в Java, я путаюсь между понятиями class и типа. Например, должен ли объект "Hello World!" принадлежать типу String или class String? Или, может быть, оба?

4b9b3361

Ответ 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 - целочисленный тип данных.