Basic types
If you are familiar with Java, then you probably know that Java has primitive (value) types and reference types.
The differences between them are that primitive type variables store the actual value of the type in their memory location (usually on the Stack) and reference type variables store the reference (memory address) to another memory location (on the Heap) where the actual data is stored.
Primitive types in Java also have their Boxed (Boxing is an automatic conversion of a primitive type to a reference type) version, a reference type. For example, a primitive int
(32-bit integer) has a reference type in type Integer
.
Kotlin doesn’t have this distinction between primitive and reference type. This doesn’t mean a Kotlin compiler cannot emit primitive types in Java bytecode. In fact, it would be really inefficient if Kotlin had only reference types.
Kotlin only hides this distinction from a developer. The compiler emits Java bytecode according to usage. In most cases, it will...