Во многих языках на основе C вроде Java есть примитивные типы данных, которые занимают определенное количество байтов. К примеру, в Java 32-битное примитивное число — это int. Существует также объектная версия int, известная как Integer. Может возникнуть вопрос, зачем нужны два типа, если хранят они один и тот же числовой тип?
Примитивы требуют меньше памяти. Это означает, что они лучше по производительности, но им все-таки не хватает некоторых функций от Integer. Хорошая новость — в Kotlin вам не нужно беспокоиться о том, использовать примитивный или объектный тип. Kotlin делает все сам, поэтому вам нужно использовать обычный Int.
Вы использовали Int для целых чисел, которые представлены через 32 бита. В Kotlin есть много числовых типов, для хранения которых нужно различное количество памяти. К примеру, для целых чисел можно использовать Byte, Short и Long. Для этих типов нужно 1, 2 и 8 байтов соответственно. Каждый из данных типов использует один бит для представления знака.
Далее дается обзор различных типов целых чисел и размер, нужной для них памяти, в байтах. В большинстве случаев используется Int. Все эти типы становятся полезными, если ваш код взаимодействует с другой программой, коротая использует один из этих более точных размеров, или если вам нужно оптимизировать размер хранилища.
| Тип | Минимальное значение | Максимальное значение | Память |
| Byte | -128 | 127 | 1 |
| Short | -32768 | 32767 | 2 |
| Int | -2147483648 | 2147483647 | 4 |
| Long | -9223372036854775807 | 9223372036854775806 | 8 |
Для дробных чисел мы использовали тип Double. В Kotlin также есть тип Float, у которого меньший диапазон точности, чем у Double, и которому нужно в два раза меньше памяти. Современные программы оптимизированы под Double, поэтому лучше использовать его.
| Тип | Минимальное значение | Максимальное значение | Точность | Память |
| Float | -3.4028235E+38 | 3.4028235E+38 | 6 цифр | 1 |
| Double | -1.797693E+308 | 1.797693E+308 | 15 цифр | 8 |
В большинстве случаев для представления чисел используются типы Int и Double. Однако время от времени вы будете сталкиваться и с другими типами данных. Предположим, нужно сложить типы Short, Byte и Long. Это можно сделать следующим образом:
| 1 2 3 4 5 | val a: Short = 12 val b: Byte = 120 val c: Int = -100000 val answer = a + b + c // Ответ будет иметь тип Int |
