Переменные и константы. Ключевые слова var, val, const
Содержание
- 1. Назначение переменных и констант. Необходимость использования переменных и констант в программе. Виды переменных
- 2. Синтаксис объявления изменяемой переменной. Ключове слово var
- 3. Пример объявления переменных различных типов с использованием ключевого слова var
- 4. Переменные, доступные только для чтения (неизменяемые переменные). Использование ключевого слова val в объявлении переменной. Синтаксис
- 5. Пример объявления и использования переменных, доступных только для чтения
- 6. Синтаксис объявления константы. Ключевое слово const
- 7. Примеры объявления констант
- 8. Что такое статическая типизация?
- 9. Что такое автоматическое определение типов?
- Связанные темы
Поиск на других ресурсах:
1. Назначение переменных и констант. Необходимость использования переменных и констант в программе. Виды переменных
В языке Kotlin фундаментальной единицей любой программы являются переменные и константы. Они используются для хранения данных (значений) в программе.
Данные описываются соответствующими типами. А следовательно, переменные и константы имеют определенный тип. Более подробно о типах данных можно прочитать здесь.
Каждая переменная или константа сохраняет некоторое значение определенного типа. Тип данных определяет размер ячейки памяти, которая будет выделена для объявленной переменной или константы.
В зависимости от алгоритма решения задачи, в программе может использоваться любое количество переменных или констант.
Каждая переменная или константа имеет имя, которое задается при ее объявлении. Имя переменной выбирается таким образом, чтобы оно соответствовало назначению этой переменной в программе. Например, количество элементов целесообразно обозначить именами length или count, а объем какого-то объекта именем volume.
Правильный выбор имен в программе дает следующие взаимосвязанные преимущества:
- повышается читабельность программы;
- облегчается сопровождение программы другими программистами;
- снижается риск допущения ошибок, которые могут возникнуть в результате путаницы в именах.
В программе можно объявлять переменные двух видов:
- изменяемые переменные (ссылки), которые объявляются с использованием ключеового слова var. Значение такой переменной в программе можно изменять многократно;
- неизменяемые переменные (ссылки) или только читаемые переменные. В этом случае используется ключевое слово val. Такой переменной нельзя присвоить значение после инициализации (переменной присваивается значение только один раз). Эти переменные соответствуют final-переменным языка Java.
⇑
2. Синтаксис объявления изменяемой переменной. Ключове слово var
Любая переменная в программе на языке Kotlin может быть объявлена одним из двух способов:
- без инициализации;
- с инициализацией.
Синтаксис (общая форма) объявления переменной без инициализации имеет следующий вид:
var VariableName: Type
здесь
- VariableName — имя переменной;
- Type — тип переменной (Int, Double и т.д.). Более подробно о базовых типа данных можно прочитать здесь.
После такого объявления, переменной можно присваивать значения типа Type или иного типа, совместимого с типом Type.
Синтаксис объявления переменной с инициализацией позволяет сразу присвоить нужное значение переменной
var VariableName: Type = Value
здесь
- VariableName — имя переменной, которая будет сохранять данные типа Type;
- Value — некоторое значение. Это значение может быть литералом, именем другой переменной или константы, результатом возврата из функции.
Если переменной VariableName присвоить значение типа, который не является типом Type или несовместим с ним, то компилятор выдаст ошибку несовместимости типов.
⇑
3. Пример объявления переменных различных типов с использованием ключевого слова var
fun main(args:Array<String>) { // Ключевое слово var // 1. Объявление переменных без инициализации // 1.1. Переменная с именем x типа Short var x : Short // позже переменной x можно присваивать некоторое значение типа Short x = 100 // 1.2. Переменная y типа String (строка) var y : String y = "bestprog.net" // 1.3. Переменная z типа Float var z : Float z = 1234.56f println("x = " + x) println("y = " + y) println("z = " + z) // 2. Объявление переменных с инициализацией // Объявить переменную a типа Double // и присвоить ей значение 12.88 var a:Double = 12.88 // Объявить переменную b типа Int // и присвоить ей целую часть переменной a var b:Int = a.toInt() // b = 12 // Объявить переменную c типа Char и присвоить ей значение var c:Char = '+'; // Объявить переменную d типа String // и присвоить ей строку var d:String = "Hello world!"; println("a = " + a) println("b = " + b) println("c = " + c) println("d = " + d) }
Результат выполнения программы
x = 100 y = bestprog.net z = 1234.56 a = 12.88 b = 12 c = + d = Hello world!
Если в вышеприведенном коде попробовать присвоить числовое значение переменной y
... // 1.2. Переменная y типа String (строка) var y : String // Попытка присвоить переменной y числовое значение y = 120 // ошибка компиляции ...
то компилятор выдаст ошибку
Error:(17, 9) Kotlin: The integer literal does not conform to the expected type String
Это логично, поскольку переменная y при объявлении имеет тип String (строка) и присвоить ей числовое значение невозможно.
⇑
4. Переменные, доступные только для чтения (неизменяемые переменные). Использование ключевого слова val в объявлении переменной. Синтаксис
Язык Kotlin позволяет использовать переменные, доступные только для чтения. Эти переменные имеют постоянные значения в течение всего времени выполнения программы. Эти переменные не являются константами. Они могут получать значение только один раз.
Например, если программа работает с некоторым файлом, то допускается задать имя файла один раз в начале программы, чтобы затем использовать этот файл многократно.
Если переменная, предназначеная только для чтения, получила начальное значение, повторная попытка изменения этого значения вызовет ошибку компиляции.
Как и в случае с var-переменными (см. п. 2) в языке Kotlin допускается объявлять переменные, предназначенные только для чтения, одним из двух способов:
- без начальной инициализации;
- с начальной инициализацией.
Общая форма (синтаксис) объявления переменной, предназначенной только для чтения, без начальной инициализации следующая
val VarName : Type
здесь
- VarName — имя объявляемой переменной
- Type — тип объявляемой переменной.
После такого объявления, переменной можно присвоить новое значение только один раз
VarName = Value
здесь Value – некоторое значение, литерал, переменная, константа или результат возврата из функции.
Соответственно, синтаксис объявления переменной, предназначенной только для чтения, с начальной инициализацией следующий
val VarName : Type = Value
⇑
5. Пример объявления и использования переменных, доступных только для чтения
fun main(args:Array<String>) { // Ключевое слово val // 1. Объявление без инициализации // 1.1. Для типа Long val a : Long a = 1_000_000_000_000_000_000 //a = 300 // здесь ошибка, повторно изменять переменную a запрещено // 1.2. Для типа Char val c : Char c = '&' println("a = " + a) println("c = " + c) // 2.1. Объявление с инициализацией // 2.2. Для типа Byte val d : Byte = 15 // 2.2. Для типа String val fileName = "myfile.txt" println("d = " + d) println("fileName = " + fileName) }
Результат выполнения программы
a = 1000000000000000000 c = & d = 15 fileName = myfile.txt
Если в вышеприведенном коде попробовать изменить значение переменной a повторно
a = 300 // здесь ошибка, повторно изменять переменную a запрещено
то компилятор выдаст ошибку
Error:(11, 5) Kotlin: Val cannot be reassigned
⇑
6. Синтаксис объявления константы. Ключевое слово const
В языке Kotlin допускается объявлять константы — имена, которые получают неизменяемые значения в течение выполнения программы. Это значения, которые никогда не изменяются в программе. Их еще называют константы времени компиляции, так как значения константам присваивается при компиляции (в момент, когда программа компилируется).
Константы могут получать значение только базовых типов: Int, Double, Float, Long, Short, Byte, Char, String, Boolean.
Для объявления константы используется модификатор const.
Чтобы в программе объявить константу нужно, чтобы эта константа была в глобальной области видимости. Объявить константу в локальной области видимости (в теле функции) не удастся. На попытку объявления константы в теле функции (в пределах фигурных скобок {}) компилятор выдаст ошибку.
Синтаксис объявления константы имеет две разновидности:
- с явным указанием типа константы;
- без явного указания типа константы. В этом случае тип константы определяется типом получаемого значения (литерала).
Синтаксис объявления константы с явным указанием типа следующий
const val ConstantName : Type = Value
здесь
- ConstantName – имя константы. При использовании этого имени в программе, будет подставляться значение Value;
- Value – значение, которое получает константа.
Синтаксис объявления константы без явного задания типа имеет вид
const val ConstantName = Value
⇑
7. Примеры объявления констант
Константы объявляются в глобальной области видимости, то есть за пределами функции main() или любой другой функции.
// Объявление константы - глобальная область видимости // 1. Без явного указания типа const val Pi = 3.1415; // константа типа Double const val Language = "Kotlin" // константа типа String // С указанием типа const val Max : Int = 200 // константа типа Int // fun MyFun() { // Здесь запрещено объявлять константы // ... } fun main(args:Array<String>) { // В локальной области запрещено объявлять константу // Использование констант Pi, Language, Max в функции main() println("Pi = " + Pi) println("Language = " + Language) println("Max = " + Max) }
Результат выполнения программы
Pi = 3.1415 Language = Kotlin Max = 200
Если в вышеприведенном коде попробовать объявить константу в теле функции main()
fun main(args:Array<String>) { // В локальной области запрещено объявлять константу const val Radius = 1.5 // ошибка компиляции // ... }
то компилятор сгенерирует ошибку
Error:(22, 5) Kotlin: Modifier 'const' is not applicable to 'local variable'
⇑
8. Что такое статическая типизация?
В языке Kotlin реализована статическая типизация. Это проверка компилятором исходного кода, написанного программистом, на корректность и совместимость типов.
В контексте сказанного различают статическую проверку совместимости типов. Эта проверка позволяет увидеть ошибки еще до компиляции кода.
⇑
9. Что такое автоматическое определение типов?
Автоматическое определение типа — это определение типа переменной или константы на основе значения, которое она получает при ее объявлении.
Каждое значение, которое присваивается переменной или константе, имеет определенный тип. Если в объявлении переменной или константы не указывать их тип, то эта переменная или константа примет тип значения которое она получает.
Пример. Объявляются переменные и константы которые получают различные типы на основе получаемых значений.
// Объявление константы типа Float const val constFloat = 1.777F // 1.777F - значение типу Float // Объявление константы типа Long const val Max = 10000000000L ... // Объявление переменной типа Char var c1 = 'Z' val c2 = 'X' // Объявление переменной типа Double var a = 2.5 var b = 3.8 val c = 2.7
⇑
Связанные темы
⇑