2. Операторы и типы
В этом задании вы познакомитесь с операторами и типами данных в языке программирования Kotlin.
Шаг 1: Изучение числовых операторов
- Откройте IntelliJ IDEA, если она еще не открыта.
- Чтобы открыть интерактивную среду Kotlin REPL, выберите Инструменты > Kotlin > Kotlin REPL .

Как и в других языках, Kotlin использует операторы сложения +, вычитания и -деления для знаков плюс, минус, умножения и деления. Kotlin также поддерживает различные типы чисел, такие как , , , и .*/IntLongDoubleFloat
- Введите следующие выражения в REPL. Чтобы увидеть результат, нажмите
Control+Enter(Command+Enterна Mac) после каждого из них.
1+1 ⇒ res8: kotlin.Int = 2 53-3 ⇒ res9: kotlin.Int = 50 50/10 ⇒ res10: kotlin.Int = 5 1.0/2.0 ⇒ res11: kotlin.Double = 0.5 2.0*3.5 ⇒ res12: kotlin.Double = 7.0
Обратите внимание, что результаты операций сохраняют типы операндов, поэтому 1/2 = 0, но 1,0/2,0 = 0,5.
- Попробуйте использовать выражения с различными комбинациями целых и десятичных чисел.
6*50 ⇒ res13: kotlin.Int = 300 6.0*50.0 ⇒ res14: kotlin.Double = 300.0 6.0*50 ⇒ res15: kotlin.Double = 300.0
- Вызывайте методы для чисел. Kotlin хранит числа как примитивные типы данных, но позволяет вызывать методы для чисел так, как если бы они были объектами.
2.times(3) ⇒ res5: kotlin.Int = 6 3.5.plus(4) ⇒ res8: kotlin.Double = 7.5 2.4.div(2) ⇒ res9: kotlin.Double = 1.2
Kotlin не допускает неявного преобразования типов. Поэтому вы не можете напрямую присвоить значение типа short переменной типа long или значение типа long переменной типа Intlong Long. Это связано с тем, что неявное преобразование чисел является распространенной причиной ошибок в программах. Вы всегда можете присваивать значения разных типов с помощью приведения типов.
- Чтобы увидеть некоторые из возможных преобразований типов, определите переменную соответствующего типа
Intв REPL.
val i: Int = 6
- Создайте новую переменную, затем введите имя переменной, указанное выше, и запятую
.to.
val b1 = i.to
IntelliJ IDEA отображает список возможных вариантов автозавершения. Это автозавершение работает для переменных и объектов любого типа.
- Выберите значение
toByte()из списка, затем распечатайте значение переменной.
val b1 = i.toByte()
println(b1)
⇒ 6
- Присвойте
Byteзначения переменным разных типов.
val b2: Byte = 1 // OK, literals are checked statically
println(b2)
⇒ 1
val i1: Int = b2
⇒ error: type mismatch: inferred type is Byte but Int was expected
val i2: String = b2
⇒ error: type mismatch: inferred type is Byte but String was expected
val i3: Double = b2
⇒ error: type mismatch: inferred type is Byte but Double was expected
- Для заданий, выдавших ошибки, попробуйте использовать приведение типов.
val i4: Int = b2.toInt() // OK!
println(i4)
⇒ 1
val i5: String = b2.toString()
println(i5)
⇒ 1
val i6: Double = b2.toDouble()
println(i6)
⇒ 1.0
- Чтобы сделать длинные числовые константы более читабельными, Kotlin позволяет добавлять подчеркивания в числа там, где это вам кажется логичным. Попробуйте ввести разные числовые константы.
val oneMillion = 1_000_000 val socialSecurityNumber = 999_99_9999L val hexBytes = 0xFF_EC_DE_5E val bytes = 0b11010010_01101001_10010100_10010010
Шаг 3: Изучите значение типов переменных
Kotlin поддерживает два типа переменных: изменяемые (mutable) и неизменяемые (immutable). Они задаются с помощью `null` varи `unchangeable` valсоответственно. С помощью val`null` можно присвоить значение один раз. Если попытаться присвоить значение повторно, возникнет ошибка. С помощью var`null` можно присвоить значение, а затем изменить его позже в программе.
- Определите переменные с помощью операторов
val`and` и `varor`, а затем присвойте им новые значения.
var fish = 1
fish = 2
val aquarium = 1
aquarium = 2
⇒ error: val cannot be reassigned
Вы можете присвоить fishзначение, а затем присвоить ему новое значение, поскольку оно определено с помощью var`.`. Попытка присвоить новое значение `.` приводит к aquariumошибке, поскольку оно определено с помощью ` val.`.
Тип переменной определяется компилятором, когда он может это выяснить из контекста. При желании вы всегда можете явно указать тип переменной, используя двоеточие.
- Определите несколько переменных и явно укажите их тип.
var fish: Int = 12
var lakes: Double = 2.5
После того как тип был присвоен вами или компилятором, изменить его невозможно, иначе возникнет ошибка.
Шаг 4: Изучите строки и символы.
В Kotlin строки представляют собой последовательности символов. Они определяются аналогично строкам в других языках программирования с помощью операторов "`$` для строк и `$` 'для отдельных символов. Конкатенацию строк можно осуществлять с помощью +оператора `$`. Kotlin также позволяет использовать шаблонные выражения строк в строковом литерале. Эти шаблоны представляют собой фрагменты кода, которые вычисляются и объединяются в строковый литерал. Шаблонные строки начинаются с символа '$', за которым следует выражение Kotlin. Это называется строковой интерполяцией .
- Создайте строковый шаблон.
val numberOfFish = 5
val numberOfPlants = 12
"I have $numberOfFish fish" + " and $numberOfPlants plants"
⇒ res20: kotlin.String = I have 5 fish and 12 plants
- Создайте строковый шаблон с выражением внутри. Как и в других языках, значением может быть результат выражения. Используйте фигурные скобки
{}для определения выражения.
"I have ${numberOfFish + numberOfPlants} fish and plants"
⇒ res21: kotlin.String = I have 17 fish and plants