Kotlin
Kotlin — современный язык для Android и программ на JVM. Курс с нуля: установка, переменные, ввод и вывод, условия, циклы, функции, null-безопасность, коллекции и классы.
Kotlin (читается «котлин») — язык программирования от компании JetBrains. Назван в честь острова Котлин в Финском заливе. Язык бесплатен, его компилятор и стандартная библиотека открыты. Первая стабильная версия, 1.0, вышла в 2016 году, а Kotlin 2.0 с новым компилятором K2 — в 2024-м. Курс рассчитан на Kotlin 2.x.
Программа на Kotlin чаще всего превращается в байт-код для JVM (Java Virtual Machine — виртуальная машина Java) — ту же, на которой работают программы на Java. Поэтому Kotlin свободно пользуется всеми библиотеками Java, а код на двух языках можно смешивать в одном проекте.
Где применяется
- Android. Google рекомендует Kotlin как основной язык для приложений Android, и официальные курсы по разработке под Android построены на нём.
- Серверы. На Kotlin пишут серверную часть сайтов и сервисов — там, где раньше был только Java.
- Программы для нескольких платформ. Kotlin Multiplatform позволяет держать общую часть кода для Android, iOS, компьютера и сайта.
- Обучение. Kotlin строже Python и короче Java: ошибки с типами и пустыми значениями ловит компилятор ещё до запуска программы.
Что нужно для начала
- компьютер с Windows, macOS или Linux;
- IntelliJ IDEA от JetBrains — среда разработки, в которую поддержка Kotlin уже встроена. Работа с Kotlin и Java в ней бесплатна;
- для самых первых уроков можно ничего не ставить: короткие программы запускаются в браузере на Kotlin Playground (play.kotlinlang.org);
- знание Java не нужно. Если Java знакома, многое покажется знакомым, а отличия собраны в справке Чем Kotlin отличается от Java.
Для приложений Android нужна отдельная программа — Android Studio. Но начинать лучше с обычных программ, которые печатают текст: так проще разобраться в самом языке, не отвлекаясь на экраны, кнопки и эмулятор телефона.
Как пройти курс
Уроки идут по порядку: установка и первая программа, переменные, ввод и вывод, условия, циклы, функции, null-безопасность, коллекции, классы и наследование. Каждый урок опирается на предыдущие. Программы в уроках целые: их можно скопировать в редактор и запустить, а под программой показано, что она выведет. Если программа читает ввод с клавиатуры, то, что нужно набрать, показано отдельным блоком «Ввод».
Набирайте примеры сами и меняйте их: так язык запоминается быстрее, чем при чтении. Сообщения компилятора поначалу пугают, но частые из них разобраны в справочнике. После каждого урока — несколько вопросов для проверки, в конце курса — итоговый тест.
После курса можно переходить к приложениям: с чего начать, рассказано в справке Как начать писать под Android, а об устройстве самой системы — в теме Android. Тем, кто хочет знать и Java, пригодится тема Java.
Курс с нуля
- 1.Установка Kotlin и первая программаГде писать программы на Kotlin — IntelliJ IDEA, Kotlin Playground или компилятор kotlinc, как создать проект, написать fun main и println, запустить и разобрать первые ошибки.
- 2.Переменные val и var, типы данныхКак объявлять переменные в Kotlin через val и var, какие бывают типы — Int, Long, Double, Boolean, Char, String, как считать и переводить числа из одного типа в другой.
- 3.Ввод с клавиатуры, вывод и строковые шаблоныКак прочитать строку и числа с клавиатуры через readln, вставить значения в текст строковым шаблоном $name и ${a + b}, вывести кавычки, перенос строки и несколько строк текста.
- 4.Условия if и whenКак программа на Kotlin выбирает, что делать: if, else и else if, сравнения и логические операции, if как выражение вместо тернарного оператора, when со значениями и диапазонами.
- 5.Циклы for и while, диапазоныКак повторять действия в Kotlin: цикл for по диапазону 1..10, until, step и downTo, циклы while и do-while, repeat, break и continue, метки для вложенных циклов.
- 6.Функции, параметры и значения по умолчаниюКак объявить свою функцию в Kotlin через fun, передать параметры и вернуть результат, функции в одну строку, параметры по умолчанию и именованные аргументы, Unit, vararg и лямбды.
- 7.Null-безопасность — ?, ?., ?: и !!Что такое null и зачем в Kotlin типы со знаком ?, как безопасно работать с пустыми значениями через ?., ?: и проверку if, когда нужен !! и чем он опасен.
- 8.Коллекции — List, MutableList, Set и MapСписки, множества и словари в Kotlin: listOf и mutableListOf, добавление и удаление, Set и Map, перебор в цикле и операции filter, map, sum, count, sorted, joinToString.
- 9.Классы, data class и objectКак описать свой тип в Kotlin: класс с конструктором и свойствами, методы, блок init, private, data class с готовыми toString, equals и copy, object и companion object.
- 10.Наследование, open и интерфейсыКак в Kotlin один класс наследует другой: open и override, вызов super, абстрактные классы, интерфейсы с методами по умолчанию, проверка типа is и умное приведение.
Справочник
- data class — зачем нуженЧто даёт data class в Kotlin: понятный toString, сравнение по содержимому, hashCode, copy и деструктуризация, правила объявления и подводные камни с var и свойствами в теле класса.
- lateinit — отложенная инициализацияЧто значит lateinit var в Kotlin, когда он нужен, как проверить isInitialized, откуда ошибка lateinit property has not been initialized и чем заменить lateinit — nullable или by lazy.
- NullPointerException в KotlinОткуда в Kotlin берётся NullPointerException, хотя язык защищён от null: оператор !!, значения из Java, lateinit, порядок создания объекта — и как найти строку с ошибкой.
- Как вывести число с двумя знаками после запятойКак в Kotlin вывести дробное число с нужным числом знаков: format с %.2f, почему иногда выходит запятая вместо точки и как задать Locale, округление roundToInt и выравнивание по ширине.
- Как начать писать под AndroidС чего начать разработку приложений Android на Kotlin: Android Studio, первый проект Empty Activity с Jetpack Compose, запуск на эмуляторе и телефоне, что выучить до этого и где официальный курс.
- Как отсортировать списокСортировка в Kotlin: sorted и sortedDescending для нового списка, sort для изменяемого, sortedBy по свойству, сортировка без учёта регистра и по нескольким полям через sortedWith.
- Как перебрать список с индексомТри способа пройти по списку в Kotlin вместе с номером элемента: withIndex, forEachIndexed и indices, перебор в обратном порядке и частая ошибка с 0..list.size.
- Как перевести строку в число и обратноПеревод строки в число в Kotlin: toInt, toLong, toDouble, безопасные toIntOrNull и toDoubleOrNull, число в строку, цифра-символ в число и ошибка NumberFormatException.
- Как получить случайное числоСлучайные числа в Kotlin: (1..6).random() для кубика, Random.nextInt с границами, дробное число, случайный элемент списка и перемешивание, одинаковая последовательность через seed.
- Как считать несколько чисел из одной строкиКак в Kotlin прочитать числа через пробел из одной строки, список из n чисел, числа на отдельных строках и ввод до конца, и что делать с лишними пробелами.
- Как установить KotlinКак поставить Kotlin в Windows, Linux и macOS: IntelliJ IDEA со встроенным Kotlin, компилятор kotlinc через SDKMAN, Snap, Homebrew или архив, JDK и проверка установки.
- Корутины — что этоЧто такое корутины в Kotlin простыми словами: зачем они нужны, что значит suspend, launch и async, чем корутины лучше потоков, где их используют в Android и что выучить до них.
- Ошибка Only safe (?.) or non-null asserted (!!.) calls are allowedПочему Kotlin не даёт вызвать метод у значения типа String? и пишет Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver, и пять способов это исправить.
- Ошибка Unresolved referenceЧто значит ошибка Unresolved reference в Kotlin и как её исправить: опечатка, большие и маленькие буквы, забытый import, переменная вне блока, функция не того типа, в Android — несинхронизированный Gradle.
- Чем Kotlin отличается от JavaГлавные отличия Kotlin от Java для новичка: короче запись, null-безопасность, data class, val и var, нет static и тернарного оператора, полная совместимость с Java и что учить первым.
- Чем val отличается от varval — переменная только для чтения, var — изменяемая. Когда что выбирать, почему val у списка не мешает его менять, чем val отличается от const val и что значит ошибка val cannot be reassigned.
Официальная документация
- Официальная документация Kotlin — https://kotlinlang.org/docs/home.html
- Kotlin Playground — запуск кода в браузере — https://play.kotlinlang.org/
- Kotlin для Android на сайте Android Developers — https://developer.android.com/kotlin