Kotlin: Переменные, типы данных и вывод на экран

В этом уроке разберём основы работы с данными: как хранить информацию, какие типы существуют и как показывать текст прямо в интерфейсе приложения.

Переменные: "val" vs "var"


В Kotlin две ключевые конструкции для объявления переменных:
  • val — неизменяемая переменная (аналог константы). После присвоения значения его нельзя поменять.
  • var — изменяемая переменная. Значение можно перезаписывать.

Пример в коде (MainActivity.kt):
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val greeting = "Привет!"          // val — нельзя изменить
    var counter = 0               // var — можно менять
    counter = counter + 1         // работает
    // greeting = "Пока!"          // ошибка: нельзя перезаписать val
}

Когда что использовать
  • val — для данных, которые не должны меняться (названия, настройки).
  • var — для счётчиков, динамических значений.

Основные типы данных


  • String: (Пример: "Текст") Строка символов.
  • Int: (Пример: 42) Целое число (от −2 147 483 648 до 2 147 483 647).
  • Long: (Пример: 10000000000L) Большое целое число.
  • Double: (Пример: 3.14) Число с плавающей точкой (высокая точность).
  • Float: (Пример: 3.14f) Число с плавающей точкой (меньшая точность).
  • Boolean: (Пример: true / false) Логическое значение.

Как указать тип явно (редко нужно — Kotlin выводит тип автоматически):
val username: String = "Alice"
val age: Int = 25

Вывод текста на экран приложения


До сих пор мы использовали println() для логов. Теперь научимся показывать текст в интерфейсе.
Шаг 1. Откройте файл макета "activity_main.xml" (вкладка "Design" или "Text").
Шаг 2. Добавьте TextView в макет:
  • В режиме "Design": перетащите TextView из панели "Palette" на экран.
  • В режиме "Text": вставьте код:

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Старый текст"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

Шаг 3. В "MainActivity.kt" получите ссылку на TextView и измените текст:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    // Находим TextView по ID
    val textView = findViewById<TextView>(R.id.textView)
    
    // Меняем текст
    textView.text = "Привет, Kotlin!"
}

Разбор кода:
  • findViewById<TextView>(R.id.textView) — ищет элемент с ID textView в макете.
  • textView.text = "..." — присваивает новое значение свойству text.

Конкатенация строк


Чтобы объединить текст и переменные, используйте:
Оператор +:
val name = "Алиса"
textView.text = "Привет, " + name + "!"

Строковые шаблоны (рекомендуется):
textView.text = "Привет, $name!"
// Для выражений: ${counter + 1}

Практическое задание


  • Создайте переменную val appName: String со значением "Мой первый Kotlin-апп".
  • Создайте переменную var visits: Int со значением 0.
  • Увеличьте visits на 1.
  • Выведите в TextView строку:
    "Приложение: $appName. Посещений: $visits"

Ожидаемый результат на экране:
Приложение: Мой первый Kotlin-апп. Посещений: 1

Отладка: где смотреть ошибки


Если приложение не запускается:
  1. Проверьте Logcat (внизу экрана) — ищите строки с E/ (ошибки).
  2. Убедитесь, что:
    • ID в findViewById совпадает с android:id в XML;
    • все переменные объявлены до использования.

  3. Перезапустите сборку: "Build → Rebuild Project".

Типичные ошибки и их решение


  • «Unresolved reference: textView»
    Проверьте, что R.id.textView существует в "activity_main.xml".
  • «NullPointerException»
    Убедитесь, что setContentView(R.layout.activity_main) вызван до findViewById.
  • «Type mismatch»
    Сверьте типы переменных (например, не пытайтесь записать String в Int).

Что дальше?


В следующем уроке разберём:
  • условные операторы (if-else, when);
  • циклы (for, while);
  • создание кнопок и обработку нажатий.


Автор:  5 часов назад