Урок 1: Переменные. Базовые типы данных. var, val и const val в Kotlin

такое переменные и их типы val и var - Android [Kotlin] для начинающих

Что такое переменные?

Если подойти к пониманию переменных абстрактно, можно сказать так, что то, что мы видим на экране компьютеров и смартфонов – в основном это данные в виде чисел и текста. То есть эта информация имеет числовой, строковый и другие типы данных. Они не появляются из ниоткуда, а передаются для отображения на экране в специальных контейнерах – переменных. Это значит, что в программе мы постоянно будем работать с данными, используя такие контейнеры.

Создание val и const val переменной

Для работы с переменной сначала ее необходимо создать и присвоить ей значение. Под капотом при создании переменной выделяется ячейка в памяти компьютера, у которой есть свой специальный тип и адрес. Давайте создадим переменную и поместим в нее какое-нибудь число. Представим, что она хранит в себе количество заказов вымышленного магазина.

 val numberOfOrders1: Int = 42

Для объявления переменной в котлине используется ключевое слово val. Далее пишется произвольное название переменной, рекомендуется, чтобы оно было осмысленным, чтобы было понятно, что она хранит в себе или для чего она используется. Обратите внимание на способ написания имени – с маленькой буквы и каждое следующее слово с большой буквы. Этот способ называется camel case и его принято использовать при именовании простых переменных и методов.

Знак Равно (“=”) – это оператор присваивания. В коде всегда данные справа от Равно присваиваются данным слева от Равно. Итак, мы объявили переменную numberOfOrders и присвоили ей значение – 42 (также можно сказать создали или задекларировали переменную и инициализировали ее).

Давайте объявим еще одну переменную и присвоим ей не число, а строку. Пусть переменная хранит в себе какое-нибудь уведомление для пользователя.

var notificationText: String = "Не забудьте маску и перчатки"

Обратите внимание, вносимый в переменную текст заключен в двойные кавычки. Теперь с этими переменными мы можем работать.

Вывод значений переменных на экран. println() — метод вывода в консоль

Итак, теперь распечатаем значение переменных в консоли. Для этого воспользуемся функцией println в которую отправим наши переменные в качестве параметров и запустим программу

println(numberOfOrders1)
println(notificationText)

При этом вывод в консоль будет такой:

42
Не забудьте маску и перчатки!

Хорошо. Теперь представим, что количество заказов изменилось и теперь нам надо отображать новые данные. Для этого присвоим нашей числовой переменной новое значение.

val numberOfOrders1: Int = 52

Запустим программу и увидим, что распечаталось новое значение. Теперь представим, что бизнес требует изменить приветственное сообщение. Давайте заменим его в нашей текстовой переменной на новое.

Обратите внимание, мы не меняем проинициализированное значение. Мы переписываем данные переменной новой информацией, заменяем все в ней имеющееся новым текстом. И вызываем println для вывода в консоли текста этой переменной.

Программа при выполнении двигается сверху вниз построчно и можно проследить ее действия. Объявили текстовую переменную и присвоили значение, распечатали ее, присвоили ей новое значение, снова распечатали уже новый текст. Выводить в консоль два разных значения нам не нужно, поэтому закомментируем старый вызов функции. Для быстрого комментария есть сочетание клавиш — Ctrl + /

notificationText = "Маски больше не потребуются!"

Запускаем. И обнаружим ошибку:

(12, 5): Val cannot be reassigned

Во-первых, при попытке запустить проект в консоли мы видим текст ошибки – “переменная val не может быть переназначена”, во-вторых среда разработки уже ее подсвечивает и предлагает варианты исправления val на изменяемую переменную var. Что мы и сделаем. Запускаем и программа отрабатывает корректно. Почему это произошло?

Переменная, объявленная с помощью ключевого слова val является неизменяемой, константа своего рода. Это значит, что если мы объявили переменную и проинициализировали ее каким-либо значением и после этого попытаемся перезаписать данные в ней (поместить новую информацию), как в данном случае, возникнет ошибка компиляции и программа не запустится. Рекомендуется всегда использовать val переменные, если это позволяет программа.

Создание var переменной

Если же нам нужна переменная, которую можно изменять и перезаписывать, используем ключевое слово – var. В реальной жизни это можно рассматривать как “защита от дурака”, чтобы отличать переменные, которые собирались модифицировать от тех, которые не собирались, когда их настолько много, что в их назначении можно запутаться.

var notificationText: String = "Не забудьте маску и перчатки!"

Поговорим о типах переменных. Когда мы объявляли наши переменные и присваивали им значения, тип автоматически определялся и присваивался переменной согласно передаваемым данным. Но в котлине можно явно указать тип переменной через двоеточие при ее объявлении или вызвав контекстное меню. Явное указание типов бывает особенно полезным, когда нужно разобраться в чужом коде или не запутаться в своем. Явно объявив переменную одного типа, нельзя потом положить в нее данные другого.

Базовые типы данных в Котлин

Существует 4 группы типа данных: числовые, вещественные, строковые и логические. Давайте по порядку. В коде выше мы использовали самый распространенный целочисленный тип данных Int. В группе целочисленных типов есть еще несколько типов, которые различаются только максимально возможным количеством хранимой информации, другими словами тип определяет какое максимальное число может хранить переменная.

1. Числовые
  • Int (сокращенное от Integer — целое число) может хранить в себе 32 bit информации. Это числа от -2 147 483 648 до 2 147 483 647 (2 147 483 647 потому что в положительный диапазон входит 0).

Подробно все числовые типы расписывать не буду, моя задача передать принцип. Тезисно пройдемся по остальным. Названия говорят сами за себя.

  • Long — может хранить до 64 бит информации
  • Short — может хранить до 16 bit информации
  • Byte — создаст самую маленькую числовую ячейку в памяти размером 8 бит (или 1 байт)

В идеальном мире каждый тип применяется под заранее известный диапазон рабочих чисел, чтобы не выделять лишнюю неиспользуемую память.

И еще стоит добавить, что можно объявить тип только для положительных чисел. Он называется Unsigned. Для его объявления добавляется U к типу и к значению в конце.

2. Вещественные типы (или типы с плавающей точкой)

Их два. Double — вмещает 64 bit и Float — вмещает 32 bit информации. Отличаются только вмещаемым размером, но еще важно учитывать один нюанс. По умолчанию если вы присвоите число с плавающей точкой без явного указания типа, оно будет Double. Чтобы явно указать тип Float, следует добавить f к значению.

3. Строковые типы

String — строка. С ней мы уже работали. Это любой набор символов, заключенных в двойных кавычках.

Char — это тип, для хранения только одного текстового символа. Задается в одинарных кавычках.

4. Логические типы

Обозначается как Boolean и может хранить в себе только значения true или false (истина или ложь).

// целочисленные
    val intNum1: Int = -2147483648 // 32 bit
    val intNum2: Int = 2147483647 // 32 bit
    val longNum: Long // 64 bit
    val shortNum: Short // 16 bit
    val byteNum: Byte // 8 bit
    val unsignedNum: UInt = 214748648u // 32 bit

    // вещественные
    val doubleNum: Double = 234.42 // 64 bit
    val floatNum: Float = 847.2f // 32 bit

    // строковые
    val stringValue: String = "Это строка фоырпарвыапрфвра"
    val charValue: Char = '1'

    // логические
    val trueValue: Boolean = true
    val falseValue: Boolean = false

Для тех, кто собрался стать Android-разработчиком

Пошаговаясхема
Пошаговая
схема

Описание процесса обучения от основ Kotlin до Android-разработчика

Бесплатныеуроки
Бесплатные
уроки

Авторский бесплатный курс по основам языка программирования Kotlin

Обучающийбот
Обучающий
бот

Тренажер и самоучитель по Котлин – бесплатные тесты и практика

Поделиться уроком

2 комментария

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *