Переменные: "val" vs "var"
В Kotlin две ключевые конструкции для объявления переменных:
val— неизменяемая переменная (аналог константы). После присвоения значения его нельзя поменять.var— изменяемая переменная. Значение можно перезаписывать.
Пример в коде (
MainActivity.kt):
ВыделитьKotlin
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 выводит тип автоматически):
ВыделитьKotlin
val username: String = "Alice"
val age: Int = 25Вывод текста на экран приложения
До сих пор мы использовали
println() для логов. Теперь научимся показывать текст в интерфейсе.
Шаг 1. Откройте файл макета "activity_main.xml" (вкладка "Design" или "Text").
Шаг 2. Добавьте
TextView в макет:
- В режиме "Design": перетащите
TextViewиз панели "Palette" на экран. - В режиме "Text": вставьте код:
ВыделитьXML
<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 и измените текст:
ВыделитьKotlin
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)— ищет элемент с IDtextViewв макете.textView.text = "..."— присваивает новое значение свойствуtext.
Конкатенация строк
Чтобы объединить текст и переменные, используйте:
Оператор
+:
ВыделитьKotlin
val name = "Алиса"
textView.text = "Привет, " + name + "!"Строковые шаблоны (рекомендуется):
ВыделитьKotlin
textView.text = "Привет, $name!"
// Для выражений: ${counter + 1}Практическое задание
- Создайте переменную
val appName: Stringсо значением"Мой первый Kotlin-апп". - Создайте переменную
var visits: Intсо значением0. - Увеличьте
visitsна1. - Выведите в
TextViewстроку:ВыделитьKotlin"Приложение: $appName. Посещений: $visits"
Ожидаемый результат на экране:
Приложение: Мой первый Kotlin-апп. Посещений: 1
Отладка: где смотреть ошибки
Если приложение не запускается:
- Проверьте Logcat (внизу экрана) — ищите строки с
E/(ошибки). - Убедитесь, что:
- ID в
findViewByIdсовпадает сandroid:idв XML; - все переменные объявлены до использования.
- ID в
- Перезапустите сборку: "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); - создание кнопок и обработку нажатий.