В этом уроке мы начнем Kotlin с нуля: запустим первую программу, разберем fun main, println, val, var, простые типы и сделаем маленький расчет в коде. Цель не в том, чтобы пересказать синтаксис, а в том, чтобы у вас сразу появился повторяемый рабочий пример
К концу урока вы сможете открыть Kotlin Playground или IntelliJ IDEA, вставить код, запустить его и понять, почему Kotlin выглядит короче Java, но при этом остается строгим JVM-языком
- Что получится в конце
- Где запускать первый код
- fun main: точка входа
- println и строковые шаблоны
- val и var
- Первый расчет
- Как изменить пример под себя
- Домашка: карточка пользователя
- Мини-практика: маленький чек-лист уроков
- Типы без перегруза
- Проверка через намеренную ошибку
- Частые ошибки и порядок проверки
- Как читать первую ошибку компилятора
- Что может быть еще интересно по этой теме
- Что почитать дальше по Kotlin
Что получится в конце
Первый пример:
fun main() {
val language = "Kotlin"
val lessons = 8
println("Language: $language")
println("Lessons planned: $lessons")
}
Ожидаемый вывод:
Language: Kotlin
Lessons planned: 8
Если вы видите эти две строки, стартовый цикл готов: код написан, Kotlin его выполнил, результат проверен глазами
Где запускать первый код
Самый быстрый путь — Kotlin Playground. Он запускается в браузере и не требует установки. Для первого урока этого достаточно: вы видите редактор, кнопку Run и вывод
Если хотите сразу работать как в реальном проекте, используйте IntelliJ IDEA. Kotlin встроен в IntelliJ IDEA и Android Studio, поэтому для JVM и Android-сценариев это нормальный старт
Не начинайте с Gradle, если вы еще не написали ни одной строки. Сначала поймите fun main, переменные и вывод, потом переходите к проектной сборке
fun main: точка входа
Строка:
fun main() {
объявляет функцию main. Именно с нее начинается обычная консольная программа Kotlin
fun означает функцию. main — специальное имя точки входа. Фигурные скобки ограничивают тело функции: все, что должно выполниться при запуске, находится внутри них
Минимальная программа:
fun main() {
println("Hello, Kotlin")
}
Если забыть закрывающую скобку, среда покажет ошибку синтаксиса. Это хороший первый тест: не бойтесь сообщений компилятора, читайте первую ошибку сверху
println и строковые шаблоны
println печатает значение и переводит вывод на новую строку:
println("Hello")
println("Kotlin")
В строках можно подставлять переменные:
val name = "Dinar"
println("Hello, $name")
Если нужно вставить выражение, используйте фигурные скобки:
val price = 1200
val discount = 200
println("Final price: ${price - discount}")
Это называется string template. В учебных примерах он делает код заметно чище, чем склеивание строк через +
val и var
val объявляет переменную, которую нельзя переназначить:
val language = "Kotlin"
var объявляет переменную, которую можно менять:
var attempts = 0
attempts = attempts + 1
Практическое правило простое: начинайте с val. Если значение действительно должно меняться, переходите на var. Так код становится спокойнее: меньше случайных изменений, проще читать намерение
Kotlin часто сам выводит тип:
val lessons = 8
Компилятор понимает, что это Int. Но можно указать тип явно:
val lessons: Int = 8
Для первых уроков используйте явный тип там, где это помогает читателю, а не в каждой строке подряд
Первый расчет
Сделаем маленький учебный расчет:
fun main() {
val price = 1500
val discount = 250
val finalPrice = price - discount
println("Price: $price")
println("Discount: $discount")
println("Final price: $finalPrice")
}
Проверьте вывод:
Price: 1500
Discount: 250
Final price: 1250
Здесь уже видно несколько привычек Kotlin: переменные объявляются через val, имена пишутся в camelCase, строковый шаблон подставляет значения в текст
Как изменить пример под себя
Добавьте процент скидки:
fun main() {
val price = 2000
val discountPercent = 15
val discount = price * discountPercent / 100
val finalPrice = price - discount
println("Final price: $finalPrice")
}
Пока все числа целые, результат тоже целый. Если вам нужны копейки, дроби или финансовая точность, тема становится отдельной. Для первого урока целых чисел достаточно
Теперь поменяйте price и discountPercent и запустите снова. Код должен пересчитывать итог без ручной правки вывода
Домашка: карточка пользователя
Сделайте программу, которая хранит:
- имя
- город
- возраст
- количество пройденных уроков
Выведите три строки:
Student: Dinar from Kazan
Age: 32
Kotlin lessons completed: 1
Дополнительная задача: добавьте переменную nextLesson и напечатайте, что открыть дальше. Не используйте var, если значение не меняется
Мини-практика: маленький чек-лист уроков
Сделаем пример, который уже похож на полезную программу. Он хранит название курса, количество готовых уроков и вычисляет, сколько осталось
fun main() {
val courseName = "Kotlin"
val plannedLessons = 8
val completedLessons = 1
val remainingLessons = plannedLessons - completedLessons
println("Course: $courseName")
println("Completed: $completedLessons / $plannedLessons")
println("Remaining: $remainingLessons")
}
Здесь важно не количество строк, а принцип: программа хранит исходные данные отдельно, вычисляет производное значение отдельно и только потом печатает результат. Такой порядок легче читать, чем если сразу писать всю арифметику внутри println
Поменяйте completedLessons на 2, затем на 8. Вывод должен меняться без правки текста руками. Это первый маленький тест на то, что переменные действительно используются как данные, а не как украшение
Типы без перегруза
Kotlin умеет выводить типы, но полезно знать базовые:
val title: String = "Kotlin"
val count: Int = 8
val rating: Double = 4.8
val isReady: Boolean = true
String хранит текст, Int — целое число, Double — дробное число, Boolean — true или false. На первом этапе этого достаточно
Если компилятор может вывести тип, не обязательно писать его в каждой строке:
val title = "Kotlin"
Но когда значение неочевидно или функция возвращает сложный тип, явная аннотация помогает читателю. Не нужно превращать Kotlin в Java-стиль с лишней многословностью, но и не надо скрывать важный смысл
Проверка через намеренную ошибку
Попробуйте написать:
val lessons = 8
lessons = 9
Kotlin покажет ошибку, потому что val нельзя переназначить. Это не мелкая синтаксическая придирка, а принцип: если значение не должно меняться, язык помогает это удержать
Теперь замените val на var:
var lessons = 8
lessons = 9
Код пройдет. Сравните ощущения: var разрешает изменение, но делает программу менее предсказуемой. Поэтому правило «сначала val» действительно работает в повседневном Kotlin
Частые ошибки и порядок проверки
Не запускается код в Playground Проверьте, что весь код находится внутри fun main(). Обычные инструкции верхнего уровня могут работать в отдельных режимах, но новичку спокойнее держать старт внутри main
Путаются кавычки Строки пишутся в двойных кавычках: "Kotlin". Одинарные кавычки нужны для одного символа: 'K'
Пытаетесь изменить val Если написали val attempts = 0, строка attempts = 1 не пройдет. Используйте var только если изменение действительно нужно
Строковый шаблон не сработал Проверьте, что переменная внутри строки пишется как $name или ${expression}, а сама строка в двойных кавычках
Как читать первую ошибку компилятора
Если Kotlin показывает несколько ошибок, начинайте с первой. Часто одна пропущенная кавычка или скобка порождает цепочку сообщений ниже
Простой порядок:
- Найти первую строку с ошибкой
- Проверить строку выше и строку ниже
- Исправить одну проблему
- Запустить снова
Не пытайтесь чинить сразу весь список. Это правило особенно помогает на старте, когда сообщения IDE кажутся слишком шумными
Что может быть еще интересно по этой теме
Kotlin подходит новичку? Да, если вы готовы к строгому компилятору и хотите JVM, Android или современный синтаксис. Но совсем без установки проще начать через Playground
Kotlin заменяет Java? Не полностью. Kotlin хорошо работает рядом с Java и часто используется там, где важны лаконичность, null safety и Android-разработка
Нужно ли сразу учить Android? Нет. Сначала полезно освоить базовый Kotlin: функции, nullable-типы, data class и коллекции. Android добавляет отдельный слой SDK и UI
Что открыть дальше? Если код запускается, следующий практичный шаг — установка среды. После этого можно разбирать null safety, потому что это одна из главных причин популярности Kotlin
Что почитать дальше по Kotlin
- Как установить Kotlin: IntelliJ IDEA, Playground и Gradle
- Null safety в Kotlin: ?, !! и Elvis operator
- Функции и data class в Kotlin
- Коллекции Kotlin: list, map, filter и groupBy



