Типы данных

Типы данных

Простые типы

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


Числа

Для хранения чисел с дробной частью (1.5, 10.45 и т.д.) используются типы Double или Float. Отличаются максимальным и минимальным значением, которые могут хранить. Double занимает в памяти 8 байт, Float 4 байта.

Long, Int, Short, Byte используются для хранения целых чисел (1, 5, 100 и т.д.), также отличаются размером необходимой для хранения памяти и максимально и минимально допустимым хранимым значением: Long 8 байт, Int 4 байта, Short 2 байта и Byte 1 байт.

Для изменения из одного типа в другой тип служат функции: toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toChar()

Логические значения

К логическим значения относятся значения true и false. Тип данных имеет название Boolean.

Проверка булевых значений производится с использованием операторов || (или), && (и), ! (не).

|| возвращает true, когда значение хотя бы одного из проверяемых значений является true, когда оба операнда являются false результат проверки является false:

var param1 = false
var param2 = true
if(param1 || param2) {
	// Выполняется этот блок кода, так как результат проверки || возвращает true, так как param2 равен true
}
&& возвращает true, когда оба операнда имеют значение true, во всех других случаях результат проверки является false:
var param1 = true
var param2 = false
if(param1 && param2) {
	// Этот блок кода не выполняется так как результат проверки значений true и false даёт значение false
} else {
// Выполняется этот блок кода
}
Символ ! меняет значение на обратное:
var param1 = false
var param2 = !param1 // param2 = true, так как значение поменялось на обратное

Символы

Символьный тип хранит только один символ, значение пишется в одинарной кавычке и является экземпляром класса Char.

var c : Char = 'a'

При вызове функций для перевода значения Char в числовые, ошибок не возникает, а в качестве значения возвращается кодовое значение символа из таблицы символов кодировки юникод.

Специальные символы могут быть экранированы с использованием символа обратной косой черты \, к этим специальным символам относятся:

\t, \b, \n, \r, \', \", \\, \$. 

Строки

Строки

Строки являются экземплярами класса String и значения строк пишутся внутри двойных кавычек:

var str = "This is first string"
Строки могут состоять из значений переменных других типов, путем их подстановки внутри строки:
var str2 = "$str and This is second string" // Вывод: This is first string and This is second string
Также можно значение других типов привести к типу String через функцию toString():
val a = 10
val stringFromA = a.toString()

К символам в строке можно получить доступ так же как и к элементам массивов посредством индекса символа:

var str = "Hello"
println(str[0]) // Так как первый индекс массива равен 0 получаем значение первого символа "H"
Несколько строк можно соединять, используя оператор + или функцию plus:
var str2 = str + " Wonderful "
var str3 = str2.plus("World")
Проверку существования или несуществования строки или подстроки в строке можно провести используя ключевое слово in:
   var str = "Hello"
// Перед in ставится оператор !, что говорит компилятору если строка World не является частью строки Hello выполни следующий код
if ("World" !in str) { 
      println("World is not part of $str")
 }

Строковые литералы

В Kotlin есть два типа строковых литералов: экранированные строки, которые могут содержать в себе экранированные символы и "сырые" строки, которые могут состоять из переносов строк и дополнительного текста. Экранированные строки пишутся внутри двойных кавычек:
var str = "Good morning!\n" // \n отвечает за перевод строки
"Сырые" строки разделены с использованием трёх двойных кавычек """, в котором нет экранированных строк и состоят из переносов строк и других символов:
var text = """
Hello, this is frist line
This is second line
"""
Для того, чтобы убрать лишние пробелы можно использовать trimMargin() в котором по умолчанию в качестве префикса используется |, но можно передавать любой другой символ передав символ этой функции: trimMargin(">")
var text = """
            |Hello, this is frist line
            |This is second line
            |This is third line""".trimMargin()

Шаблоны строк

При необходимости можно генерировать строки используя шаблоны строк, что означает встроить значение переменной или рассчитанное значение какого-либо выражения в строку:
var a = 10
val str = "a = $a" // Вывод: a = 10
var b = 20
val str2 = "a+b = ${a + b}" // Вывод: a+b = 30