Kotlin Data Types
Kotlin Data Types
In Kotlin, the type of a variable is decided by its value:
val myDoubleNum = 5.99 // Double
val myLetter = 'D' // Char
val myBoolean = true // Boolean
val myText = "Hello" // String
However, you learned from the previous chapter that it is possible to specify the type if you want:
val myDoubleNum: Double = 5.99 // Double
val myLetter: Char = 'D' // Char
val myBoolean: Boolean = true // Boolean
val myText: String = "Hello" // String
Sometimes you have to specify the type, and often you don't. Anyhow, it is good to know what the different types represent.
You will learn more about when you need to specify the type later.
Data types are divided into different groups:
Number types are divided into two groups:
Integer types store whole numbers, positive or negative (such as 123 or -456), without decimals.
Valid types are
Floating point types represent numbers with a fractional part,
containing one or more decimals. There are two types:
If you don't specify the type for a numeric variable, it is most often
Int for whole numbers and
Double for floating point numbers.
Byte data type can store whole numbers
from -128 to 127. This can be used instead of
Int or other integer types to
save memory when you are certain that the value will be within -128 and 127:
Short data type can store whole numbers from -32768 to 32767:
Int data type can store whole numbers
from -2147483648 to 2147483647:
Long data type can store whole numbers from -9223372036854775808 to 9223372036854775808. This is used when
Int is not large enough to store the value.
Optionally, you can end the value with an "L":
Difference Between Int and Long
A whole number is an
Int as long as it is up to 2147483647. If it goes beyond
that, it is defined as
val myNum2 = 2147483648 // Long
Floating Point Types
Floating point types represent numbers with a decimal, such as 9.99 or 3.14515.
Float data type can store fractional numbers from 3.4e−038 to 3.4e+038. Note that you should end the value with an "F":
Double data type can store fractional
numbers from 1.7e−308 to 1.7e+038:
The precision of a floating point value indicates how many digits the value can have
after the decimal point.
The precision of
Float is only six or seven
decimal digits, while
Double variables have a precision
of about 15 digits. Therefore it is safer to use
Double for most calculations.
A floating point number can also be a scientific number with an "e" or "E" to indicate the power of 10:
val myNum2: Double = 12E4
Boolean data type and can only take the values
val isFishTasty: Boolean = false
println(isKotlinFun) // Outputs true
println(isFishTasty) // Outputs false
Boolean values are mostly used for conditional testing, which you will learn more about in a later chapter.
Char data type is used to store a
single character. A char value must be
surrounded by single quotes, like 'A' or 'c':
Unlike Java, you cannot use ASCII values to display certain characters. The value 66 would output a "B" in Java, but will generate an error in Kotlin:
println(myLetter) // Error
String data type is used to store a sequence of characters (text). String values must be surrounded by
Arrays are used to store multiple values in a single variable, instead of declaring separate variables for each value.
You will learn more about arrays in the Arrays chapter.
In Kotlin, numeric type conversion is different from Java. For example, it is not possible to convert an
Int type to a
Long type with the following code:
val y: Long = x
println(y) // Error: Type mismatch
To convert a numeric data type to another type, you must use one of the following functions:
val y: Long = x.toLong()