Table of Contents
In this topic, we will learn about the classification and properties of basic types in Kotlin. You may know some of them. Basic types can be separated into several groups according to their meaning. The types from the same group operate similarly, but they have different sizes and, as a consequence, represent different ranges of values.
Numbers
Kotlin provides several types for integers and fractional numbers.
Integer numbers (0, 1, 2, …) are represented by the following four types: Long
, Int
, Short
, Byte
(from the largest to the smallest). These types have different sizes and may represent different ranges of values. The integer type range can be calculated as −(2n−1) to (2n−1)−1, where n is the number of bits. The range includes 0, that’s why we subtract 1 from the upper bound.
Byte
: 8 bits (1 byte), range varies from -128 to 127;Short
: 16 bits (2 bytes), range varies from -32768 to 32767;Int
: 32 bits (4 bytes), range varies from −(231) to (231)−1;Long
: 64 bits (8 bytes), range varies from −(263) to (263)−1.
The size cannot be changed. It does not depend on the operating system or hardware.
The most common integer types are Int
and Long
. Try to stick to Int
in practice. If you need more freedom for your numbers, use Long
:
val zero = 0 // Int
val one = 1 // Int
val oneMillion = 1_000_000 // Int
val twoMillion = 2_000_000L // Long because it is tagged with L
val bigNumber = 1_000_000_000_000_000 // Long, Kotlin automatically chooses it (Int is too small)
val ten: Long = 10 // Long because the type is specified
val shortNumber: Short = 15 // Short because the type is specified
val byteNumber: Byte = 15 // Byte because the type is specified
Floating-point types represent numbers with fractional parts. Kotlin has two such types: Double
(64 bits) and Float
(32 bits). These types can store only a limited number of decimal digits (~6-7 for Float
and ~14-16 for Double
). The Double
type is more common in practice:
val pi = 3.1415 // Double
val e = 2.71828f // Float because it is tagged with f
val fraction: Float = 1.51f // Float because the type is specified
To display the maximum and minimum value of a numeric type (including Double
and Float
), you need to write the type name followed by a dot .
and then either MIN_VALUE
or MAX_VALUE
:
println(Int.MIN_VALUE) // -2147483648
println(Int.MAX_VALUE) // 2147483647
println(Long.MIN_VALUE) // -9223372036854775808
println(Long.MAX_VALUE) // 9223372036854775807
It is also possible to get the size of an integer type in bytes or bits (1 byte = 8 bits):
println(Int.SIZE_BYTES) // 4
println(Int.SIZE_BITS) // 32
Characters
Kotlin has a Char
type to represent various letter characters (uppercase and lowercase), digits, and other symbols. Each character is a letter character in single quotes. The size is similar to the Short
type (2 bytes = 16 bits):
val lowerCaseLetter = 'a'
val upperCaseLetter = 'Q'
val number = '1'
val space = ' '
val dollar = '$'
Characters can represent symbols of many alphabets, including hieroglyphs and some special symbols, which we will consider later.
Booleans
Kotlin provides a type called Boolean
. It can store only two values: true
and false
. It represents only one bit of information, but its size is not precisely defined.
val enabled = true
val bugFound = false
We will often use this type in conditionals.
Strings
The String
type represents a sequence of characters in double quotes. It is one of the most popular types.
val creditCardNumber = "1234 5678 9012 3456"
val message = "Learn Kotlin instead of Java."
Conclusion
In this topic, we have discussed the most common types: String
, Int
, Long
, Boolean
, Char
, and Double
. We will learn about other data types later. Remember, Long
is the largest integer type. Knowing sizes and ranges of integer types may help with a job interview.