Шаг 18.
Основы Kotlin.
Переменные, константы и типы. Простые типы Java в Kotlin

    На этом шаге мы рассмотрим использование простых типов Java в Kotlin.

    В Java есть два вида типов:

Ссылочные типы определяются в исходном коде, когда некоторый исходный код определяет тип. Java также предлагает простые типы (часто их называют просто "примитивы"), которые не имеют определения в исходном коде и представлены ключевыми словами.

    Ссылочный тип в Java всегда начинается с прописной буквы, чтобы показать, что где-то есть исходный код, определяющий этот тип. Вот как выглядит объявление experiencePoints со ссылочным типом на языке Java:

  Integer experiencePoints = 5;

    Имена простых типов в Java начинаются со строчной буквы:

  int experiencePoints = 5;

    Для всех примитивов в Java имеется соответствующий ссылочный тип (но не все ссылочные типы имеют соответствующий простой тип). Зачем противопоставлять одно другому?

    Часто ссылочные типы выбираются просто потому, что некоторые возможности языка Java доступны только с применением ссылочных типов. Например, обобщение типов, с которыми вы познакомитесь позже, не работает с примитивами. Ссылочные типы также упрощают использование объектно-ориентированных возможностей Java.

    С другой стороны, примитивы имеют лучшую производительность и некоторые другие особенности.

    В отличие от Java, Kotlin предоставляет только один вид типов: ссылочные типы.

  var experiencePoints: Int = 5

    На то есть несколько причин. Во-первых, в отсутствие выбора между разновидностями типа вы не сможете так же легко загнать себя в угол, как при наличии такого выбора. Например, представьте, что вы объявили переменную простого типа, а потом оказалось, что механизм обобщения требует применения ссылочного типа? Поддержка в Kotlin только ссылочных типов навсегда избавляет вас от этой проблемы.

    Если вы знакомы с Java, то, наверное, думаете сейчас: "Но примитивы обеспечивают лучшую производительность, чем ссылочные типы!" И это правда. Но давайте посмотрим, как выглядит переменная experiencePoints в байт-коде, который вы видели раньше:

  int experiencePoints = 5;

    Как видите, вместо ссылочного использован простой тип. Как такое возможно, если Kotlin поддерживает только ссылочные типы? Компилятор Kotlin, если есть такая возможность, использует примитивы байт-кода Java, потому что они действительно обеспечивают лучшую производительность.

    Kotlin предоставляет удобство ссылочных типов и производительность примитивов. В Kotlin вы найдете соответствующие ссылочные типы для восьми примитивов, с которыми вы, возможно, уже знакомы по Java.

    Со следующего шага мы начнем рассматривать условные конструкции.




Предыдущий шаг Содержание Следующий шаг