---
title: Типы данных
seo:
  title: Типы данных — Kotlin Developer
  description: "Тема «Типы данных» для собеседования Kotlin Developer. Что такое Any, Nothing, Unit в Kotlin? Какие основные типы данных поддерживаются в Kotlin?"
---

[Все темы Kotlin Developer](/kotlin-developer)

## <strong>Что такое</strong> <code>Any</code><strong>,</strong> <code>Nothing</code><strong>,</strong> <code>Unit</code> <strong>в Kotlin?</strong> [#q-14bee738d69b81a0b5dcf1d9a8f1f4fd]

Определения типов данных&#58;

<code>Any</code> - это базовый класс в Kotlin, от которого наследуются все
остальные классы. Он является супертипом для всех классов.

<code>Nothing</code> - это специальный тип, который не имеет значений. Он
используется для обозначения ситуаций, когда функция никогда не завершается
нормально (например, функция, которая бросает исключение).

<code>Unit</code> - это тип, который используется для обозначения функций, не
возвращающих значения. Он аналогичен типу <code>void</code> в других языках
программирования.

:::note[Ссылки для изучения]

1. [Типы данных в Kotlin](https://metanit.com/kotlin/tutorial/2.2.php)
   :::

---

## <strong>Какие основные типы данных поддерживаются в Kotlin?</strong> [#q-14bee738d69b8135a4dfd801825bb9a0]

Определения типов данных&#58;

{/* prettier-ignore */}
- <strong>Числовые типы</strong>&#58;

    - <code>Byte</code>, <code>Short</code>, <code>Int</code>, <code>Long</code>, <code>Float</code>, <code>Double</code>

- <strong>Символьные и строковые типы</strong>&#58;

    - <code>Char</code>, <code>String</code>

- <strong>Логический тип</strong>&#58;

    - <code>Boolean</code>

- <strong>Коллекции</strong>&#58;

    - <code>List</code>, <code>MutableList</code>, <code>Set</code>, <code>MutableSet</code>, <code>Map</code>, <code>MutableMap</code>

- <strong>Nullable типы</strong>&#58;

    - Все вышеперечисленные типы могут быть <code>null</code> (например, <code>String&#63;</code>).

:::note[Ссылки для изучения]

1. [Типы данных в Kotlin](https://metanit.com/kotlin/tutorial/2.2.php)
   :::

---

## <strong>Как работают</strong> <code>nullable</code> <strong>типы в Kotlin и чем они полезны?</strong> [#q-14bee738d69b8162bda9c8e88c12bf09]

<code>Nullable</code> типы в Kotlin обозначаются символом <code>&#63;</code>.
Это позволяет избежать NullPointerException (<code>NPE</code>) путем явного
указания, что переменная может быть <code>null</code>.

Пример&#58;

```kotlin
var name: String? = "Alice"
name = null  // Разрешено
println(name?.length)  // Безопасный вызов (safe call), результат: null
```

Преимущества&#58;

- Явное указание nullable типов помогает предотвращать ошибки времени выполнения, связанные с null.

- Компилятор Kotlin требует обработки возможных значений null, что делает код безопаснее.

:::note[Ссылки для изучения]

1. [Типы данных в Kotlin](https://metanit.com/kotlin/tutorial/2.2.php)
   :::

---

## <strong>Объясните различие между</strong> <code>val</code> <strong>и</strong> <code>var</code><strong>.</strong> [#q-14bee738d69b81929427de71b7aecb9d]

Основная разница между <code>val</code> и <code>var</code>&#58;

- <code>val</code> (value)&#58; Объявляет неизменяемую переменную, которая может
  быть назначена только один раз.

  ```kotlin
  val name = "Alice"
  name = "Bob"  // Ошибка компиляции
  ```

- <code>var</code> (variable)&#58; Объявляет изменяемую переменную, значение
  которой можно изменять.

  ```kotlin
  var age = 25
  age = 26  // Разрешено
  ```

:::note[Ссылки для изучения]

1. [Типы данных в Kotlin](https://metanit.com/kotlin/tutorial/2.2.php)
   :::

---

## <strong>Как работать с коллекциями в Kotlin и какие типы коллекций существуют?</strong> [#q-14bee738d69b810286d9f72a128f9300]

Kotlin различает интерфейсы коллекций только для чтения и изменяемые интерфейсы. List, Set и Map не гарантируют неизменяемость объекта или его элементов; комментарии «неизменяемый» в примерах ниже означают доступ только для чтения.

{/* prettier-ignore */}
1. <code>List</code> <strong>и</strong> <code>MutableList</code>&#58;

    ```kotlin
    val list: List<String> = listOf("one", "two", "three")  // Неизменяемый список
    val mutableList: MutableList<String> = mutableListOf("one", "two", "three")  // Изменяемый список
    mutableList.add("four")
    ```

1. <code>Set</code> <strong>и</strong> <code>MutableSet</code>&#58;

    ```kotlin
    val set: Set<String> = setOf("one", "two", "three")  // Неизменяемое множество
    val mutableSet: MutableSet<String> = mutableSetOf("one", "two", "three")  // Изменяемое множество
    mutableSet.add("four")
    ```

1. <code>Map</code> <strong>и</strong> <code>MutableMap</code>&#58;

    ```kotlin
    val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)  // Неизменяемый словарь
    val mutableMap: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2, "three" to 3)  // Изменяемый словарь
    mutableMap["four"] = 4
    ```

1. <strong>Операции с коллекциями</strong>&#58;

    - <code>filter</code>&#58; Фильтрация элементов.

        ```kotlin
        val filtered = list.filter { it.startsWith("t") }  // ["two", "three"]
        ```

    - <code>map</code>&#58; Преобразование элементов.

        ```kotlin
        val mapped = list.map { it.toUpperCase() }  // ["ONE", "TWO", "THREE"]
        ```

    - <code>forEach</code>&#58; Итерация по элементам.

        ```kotlin
        list.forEach { println(it) }
        ```

:::note[Ссылки для изучения]

1. [Типы данных в Kotlin](https://metanit.com/kotlin/tutorial/2.2.php)
   :::
