Files
obsidian/Kotlin/Kotlin.md
T

146 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Kotlin
description: Полное пособие по Kotlin — синтаксис, ООП, корутины, инструментарий
tags:
- kotlin
---
Статически типизированный язык от JetBrains, работающий на [JVM](../Программирование%20на%20Java/JVM/JVM.md), а также компилируемый в JavaScript, WebAssembly и нативный код.
- Первый релиз - 2011, стабильная 1.0 - 2016
- Официальный язык разработки для Android с 2019
- Полная двусторонняя совместимость с Java: один проект может содержать оба языка
- Текущая версия - 2.4.x, компилятор K2 по умолчанию
Главные отличия от Java: [null-безопасность](Синтаксис%20и%20типы/Null-безопасность/Null-безопасность.md) на уровне типов, [корутины](Корутины/Корутины.md) вместо потоков, выражения вместо инструкций, отсутствие проверяемых исключений, в 2-3 раза меньше кода на ту же задачу.
## Маршрут
Последовательность для изучения с нуля. Каждая заметка заканчивается ссылкой `Далее:`, так что можно просто идти по цепочке.
1. [Hello World!](Синтаксис%20и%20типы/Базовый%20синтаксис/Hello%20World!.md) - начало
2. [Null-безопасность](Синтаксис%20и%20типы/Null-безопасность/Null-безопасность.md) - ядро системы типов
3. [ООП](ООП/ООП.md) - классы и объекты
4. [Коллекции](Коллекции/Коллекции.md) - структуры данных
5. [Функции высшего порядка](Функциональный%20Kotlin/Функции%20высшего%20порядка.md) - функциональный стиль
6. [Корутины](Корутины/Корутины.md) - асинхронность
## Синтаксис и типы
### Базовый синтаксис
- [Hello World!](Синтаксис%20и%20типы/Базовый%20синтаксис/Hello%20World!.md)
- [Типы данных](Синтаксис%20и%20типы/Базовый%20синтаксис/Типы%20данных.md)
- [Переменные](Синтаксис%20и%20типы/Базовый%20синтаксис/Переменные.md)
- [Операторы и выражения](Синтаксис%20и%20типы/Базовый%20синтаксис/Операторы%20и%20выражения.md)
- [Условные конструкции](Синтаксис%20и%20типы/Базовый%20синтаксис/Условные%20конструкции.md)
- [Циклы и диапазоны](Синтаксис%20и%20типы/Базовый%20синтаксис/Циклы%20и%20диапазоны.md)
- [Строковые шаблоны и вывод](Синтаксис%20и%20типы/Базовый%20синтаксис/Строковые%20шаблоны%20и%20вывод.md)
- [Пакеты и импорты](Синтаксис%20и%20типы/Базовый%20синтаксис/Пакеты%20и%20импорты.md)
### Null-безопасность
- [Null-безопасность](Синтаксис%20и%20типы/Null-безопасность/Null-безопасность.md)
- [Операторы null-безопасности](Синтаксис%20и%20типы/Null-безопасность/Операторы%20null-безопасности.md)
- [Умные приведения](Синтаксис%20и%20типы/Null-безопасность/Умные%20приведения.md)
- [Платформенные типы](Синтаксис%20и%20типы/Null-безопасность/Платформенные%20типы.md)
### Работа с данными
- [Строки](Синтаксис%20и%20типы/Работа%20с%20данными/Строки.md)
- [Char](Синтаксис%20и%20типы/Работа%20с%20данными/Char.md)
- [Числа и переполнение](Синтаксис%20и%20типы/Работа%20с%20данными/Числа%20и%20переполнение.md)
- [Массивы](Синтаксис%20и%20типы/Работа%20с%20данными/Массивы.md)
- [Функции](Синтаксис%20и%20типы/Работа%20с%20данными/Функции.md)
- [Лямбды и функциональные типы](Синтаксис%20и%20типы/Работа%20с%20данными/Лямбды%20и%20функциональные%20типы.md)
- [Деструктуризация](Синтаксис%20и%20типы/Работа%20с%20данными/Деструктуризация.md)
- [Приведение типов](Синтаксис%20и%20типы/Работа%20с%20данными/Приведение%20типов.md)
### Базовые типы ООП
- [Any, Unit, Nothing](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Any,%20Unit,%20Nothing.md)
- [Data class](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Data%20class.md)
- [Enum class](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Enum%20class.md)
- [Sealed class и interface](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Sealed%20class%20и%20interface.md)
- [Value class](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Value%20class.md)
- [Object и companion object](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Object%20и%20companion%20object.md)
- [Typealias](Синтаксис%20и%20типы/Базовые%20типы%20ООП/Typealias.md)
- [equals, hashCode и toString](Синтаксис%20и%20типы/Базовые%20типы%20ООП/equals,%20hashCode%20и%20toString.md)
## ООП
- [ООП](ООП/ООП.md)
- [Классы и конструкторы](ООП/Классы%20и%20конструкторы.md)
- [Свойства](ООП/Свойства.md)
- [Инициализация](ООП/Инициализация.md)
- [Модификаторы видимости](ООП/Модификаторы%20видимости.md)
- [Наследование](ООП/Наследование.md)
- [Переопределение](ООП/Переопределение.md)
- [Абстрактные классы](ООП/Абстрактные%20классы.md)
- [Интерфейсы](ООП/Интерфейсы.md)
- [Делегирование](ООП/Делегирование.md)
- [Вложенные и внутренние классы](ООП/Вложенные%20и%20внутренние%20классы.md)
- [Полиморфизм](ООП/Полиморфизм.md)
## Исключения
- [Система исключений](Исключения/Система%20исключений.md)
- [Result и runCatching](Исключения/Result%20и%20runCatching.md)
- [Проверки и контракты](Исключения/Проверки%20и%20контракты.md)
## Коллекции
- [Коллекции](Коллекции/Коллекции.md)
- [List, Set, Map](Коллекции/List,%20Set,%20Map.md)
- [Изменяемость](Коллекции/Изменяемость.md)
- [Операции](Коллекции/Операции.md)
- [Sequence](Коллекции/Sequence.md)
- [Коллекции под капотом](Коллекции/Коллекции%20под%20капотом.md)
## Дженерики
- [Параметрический полиморфизм](Дженерики/Параметрический%20полиморфизм.md)
- [Вариантность](Дженерики/Вариантность.md)
- [Проекции типов](Дженерики/Проекции%20типов.md)
- [Reified и inline](Дженерики/Reified%20и%20inline.md)
## Функциональный Kotlin
- [Функции высшего порядка](Функциональный%20Kotlin/Функции%20высшего%20порядка.md)
- [Inline-функции](Функциональный%20Kotlin/Inline-функции.md)
- [Функции-расширения](Функциональный%20Kotlin/Функции-расширения.md)
- [Scope-функции](Функциональный%20Kotlin/Scope-функции.md)
- [Инфиксные и операторные функции](Функциональный%20Kotlin/Инфиксные%20и%20операторные%20функции.md)
- [Receivers и context parameters](Функциональный%20Kotlin/Receivers%20и%20context%20parameters.md)
- [DSL](Функциональный%20Kotlin/DSL.md)
- [Паттерны проектирования](Функциональный%20Kotlin/Паттерны%20проектирования.md)
## Корутины
- [Корутины](Корутины/Корутины.md)
- [Suspend-функции](Корутины/Suspend-функции.md)
- [Структурированная конкурентность](Корутины/Структурированная%20конкурентность.md)
- [Билдеры корутин](Корутины/Билдеры%20корутин.md)
- [Диспетчеры и контекст](Корутины/Диспетчеры%20и%20контекст.md)
- [Отмена и таймауты](Корутины/Отмена%20и%20таймауты.md)
- [Исключения в корутинах](Корутины/Исключения%20в%20корутинах.md)
- [Flow](Корутины/Flow.md)
- [StateFlow и SharedFlow](Корутины/StateFlow%20и%20SharedFlow.md)
- [Channels](Корутины/Channels.md)
- [Разделяемое состояние](Корутины/Разделяемое%20состояние.md)
- [Корутины против потоков](Корутины/Корутины%20против%20потоков.md)
## Взаимодействие с Java
- [Взаимодействие с Java](Взаимодействие%20с%20Java/Взаимодействие%20с%20Java.md)
- [Java из Kotlin](Взаимодействие%20с%20Java/Java%20из%20Kotlin.md)
- [Kotlin из Java](Взаимодействие%20с%20Java/Kotlin%20из%20Java.md)
- [Kotlin в байт-коде](Взаимодействие%20с%20Java/Kotlin%20в%20байт-коде.md)
## Инструментарий
- [Инструментарий](Инструментарий/Инструментарий.md)
- [kotlinc](Инструментарий/kotlinc.md)
- [Gradle и Kotlin DSL](Инструментарий/Gradle%20и%20Kotlin%20DSL.md)
- [Структура проекта](Инструментарий/Структура%20проекта.md)
- [Компилятор K2](Инструментарий/Компилятор%20K2.md)
- [KSP](Инструментарий/KSP.md)
- [Линтеры и формат](Инструментарий/Линтеры%20и%20формат.md)
## Тестирование
- [Тестирование](Тестирование/Тестирование.md)
- [kotlin.test и JUnit 5](Тестирование/kotlin.test%20и%20JUnit%205.md)
- [Kotest](Тестирование/Kotest.md)
- [MockK](Тестирование/MockK.md)
- [Тестирование корутин](Тестирование/Тестирование%20корутин.md)
## Рефлексия
- [Рефлексия](Рефлексия/Рефлексия.md)
- [Аннотации](Рефлексия/Аннотации.md)