Built-In Data Types
Kotlin comes with the standard numeric data types you’d expect, and in Kotlin all of these data types are full-blown objects — not primitive data types.
How to declare variables of the basic numeric types:
val b: Byte = 1
val i: Int = 1
val l: Long = 1
val s: Short = 1
val d: Double = 2.0
val f: Float = 3.0f
In the first four examples, if you don’t explicitly specify a type, the number 1 will default to an Int, so if you want one of the other data types — Byte, Long, or Short — you need to explicitly declare those types, as shown. Numbers with a decimal (like 2.0) will default to a Double, so if you want a Float you need to declare a Float, as shown in the last example. You can also declare Long and Float types like this:
val l = 1L
val f = 3.0f
Because Int and Double are the default numeric types, you typically create them without explicitly declaring the data type:
val i = 123 // defaults to Int
val x = 1.0 // defaults to Double
All of those data types have the same data ranges as their Java equivalents:
| Type | Bit width |
|---|---|
| Byte | 8 |
| Short | 16 |
| Int | 32 |
| Long | 64 |
| Float | 32 |
| Double | 64 |
(For more information on those, see my article, JVM bit sizes and ranges.)
BigInteger and BigDecimal
In Kotlin you can use the java.math.BigInteger class:
> import java.math.BigInteger
> val x = BigInteger("1")
Kotlin also has convenient extension functions to help you convert other data types to BigInteger:
> val y = 42.toBigInteger()
> val y = 42L.toBigInteger()
Kotlin lets you use the Java BigDecimal class in similar ways:
> import java.math.BigDecimal
> val x = BigDecimal("1.0")
> 1.0.toBigDecimal()
See these links for more information:
String, Char, and Boolean
Kotlin also has String, Char, and Boolean data types, which I always declare with the implicit form:
val name = "Bill"
val c = 'c'
val b = true