Kotlin: Data Types
Tags: android, kotlin, programming, beginners
Published: 2023-11-16 03:27:05


![Beauty Landscape](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v24k587x0xohbal1ne2h.gif)
`Untuk membuka tautan, lebih di sarankan --> klik kanan, lalu pilih buka link di tab baru agar tidak menutup artikel ini.`<br>
Suatu [Data](https://en.wikipedia.org/wiki/Data_(computer_science)) dalam bahasa [kotlin](https://kotlinlang.org/) dapat memiliki berbagai tipe.

Sebagai contoh, untuk menyelesaikan masalah dalam soal aritmatika ini, Kita menulis [ekspresi](https://en.wikipedia.org/wiki/Expression_(computer_science)) sebagai berikut:

```kotlin
5.9 + 6
```

Kita tahu bahwa penambahan angka-angka tersebut menghasilkan angka lain. satu angka bersifat pecahan/[float](https://en.wikipedia.org/wiki/Floating-point_arithmetic) (5.9), yang disebut [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format), dan yang lainnya adalah angka bulat (6), yang disebut sebagai [Int](https://en.wikipedia.org/wiki/Integer_(computer_science)). pada contoh [ekspresi](https://en.wikipedia.org/wiki/Expression_(computer_science)) kode diatas, Kita pasti tahu hasil dari penjumlahan tersebut adalah pecahan.

Sebuah **Jenis** dari suatu **Data** pada dunia pemrograman juga disebut dengan istilah [Data Type](https://en.wikipedia.org/wiki/Data_type). Data Type akan memberi tahu Kotlin bagaimana Kita memperlakukan penggunaan sebuah [data](https://en.wikipedia.org/wiki/Data_(computer_science)). [Data Type](https://en.wikipedia.org/wiki/Data_type) menyediakan **seperangkat nilai** dimana suatu [ekspresi](https://en.wikipedia.org/wiki/Expression_(computer_science)) dapat mengambil dan mengimplementasikan nilai tersebut kedalamnya. Sebuah [Data Type](https://en.wikipedia.org/wiki/Data_type) mendefinisikan _**Operasi**_ yang dapat dilakukan pada [data](https://en.wikipedia.org/wiki/Data_(computer_science)), Makna dari [data](https://en.wikipedia.org/wiki/Data_(computer_science)) itu sendiri, dan bagaimana [nilai](https://en.wikipedia.org/wiki/Value_(computer_science)) dari [Data Type](https://en.wikipedia.org/wiki/Data_type) tersebut dapat disimpan.

Kotlin menggunakan [Data Type](https://en.wikipedia.org/wiki/Data_type) untuk memastikan bahwa [ekspresi](https://en.wikipedia.org/wiki/Expression_(computer_science)) yang Kita gunakan itu benar dan sesuai standar pengoperasian bahasa kotlin. Pada [ekspresi](https://en.wikipedia.org/wiki/Expression_(computer_science)) di atas tadi, Kotlin membuat nilai baru dengan tipe [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) untuk menyimpan hasil penjumlahan `5.9 + 6`.

Kotlin mencoba beradaptasi dengan kebutuhan para programmer. Jika Kita meminta kotlin untuk melakukan sesuatu yang melanggar aturan pemrograman pada [Data Type](https://en.wikipedia.org/wiki/Data_type) di bahasa kotlin, ia akan menghasilkan pesan error. Sebagai contoh, kita coba tambahkan [String](https://en.wikipedia.org/wiki/String_(computer_science)) dan angka pada `source-code` berikut ini:

```kotlin
// DataTypes/StringPlusNumber.kt

fun main() {

  println("Luna" + 3.8)

}

/* Output:

Luna3.8

*/
```

[Data Type](https://en.wikipedia.org/wiki/Data_type) memberi tahu Kotlin cara menggunakan data dengan benar. Dalam hal ini, aturan [Data Type](https://en.wikipedia.org/wiki/Data_type) memberi tahu Kotlin cara menambahkan angka ke [String](https://en.wikipedia.org/wiki/String_(computer_science)): dengan menggabungkan dua nilai dan membuat [String](https://en.wikipedia.org/wiki/String_(computer_science)) untuk menyimpan hasilnya.

Sekarang kita coba kalikan [String](https://en.wikipedia.org/wiki/String_(computer_science)) dan [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) dengan mengganti + dalam StringPlusNumber.kt menjadi *:

```kotlin
"Sally" * 5.9
```
Menggabungkan [Data Type](https://en.wikipedia.org/wiki/Data_type) ini tidak masuk akal bagi Kotlin, sehingga memberi pesan error/kesalahan ketika kita run [ekspresi](https://en.wikipedia.org/wiki/Expression_(computer_science)) perkalian diatas tadi.

##Type Inference:

[Type inference](https://en.wikipedia.org/wiki/Type_inference) adalah suatu kemampuan yang digunakan bahasa Kotlin yang memungkinkan programmer untuk tidak perlu secara [eksplisit](https://kbbi.kemdikbud.go.id/entri/eksplisit) mendefinisikan [tipe data](https://en.wikipedia.org/wiki/Data_type) pada variabel. Sebagai gantinya, Kotlin akan secara otomatis mendeteksi tipe data yang digunakan berdasarkan nilai yang diberikan kepada variabel tersebut.

Kita ambil contoh dari menentukan sebuah `data-type` dengan [Type inference](https://en.wikipedia.org/wiki/Type_inference):

```kotlin
val identifier = initialization
```
Kita mulai dengan kata kunci `val` atau `var`, diikuti oleh `identifier`, sama dengan `=` , dan nilai `inisialisasi`, contoh penerapannya sebagai berikut:

```kotlin
val n = 1

var p = 1.2
```

##Statically typed:

Tak hanya [Type inference](https://en.wikipedia.org/wiki/Type_inference) saja yg dimiliki kotlin, kotlin juga memiliki kemampuan [statically typed](https://en.wikipedia.org/wiki/Type_system#Static_typing).  Dalam bahasa Kotlin Statically typed mengindikasikan bahwa suatu variabel perlu mendeklarasikan [tipe data-nya](https://en.wikipedia.org/wiki/Data_type) sebelum variabel tersebut dapat digunakan. Dengan kata lain, Kita harus secara [eksplisit](https://kbbi.kemdikbud.go.id/entri/eksplisit) menentukan jenis data yang akan disimpan di dalamnya. Ini adalah kebalikan dari [Type inference](https://en.wikipedia.org/wiki/Type_inference), di mana tipe data variabel dapat ditentukan secara otomatis berdasarkan nilai yang diberikan kepada kode tersebut. Dengan pendeklarasian secara **Statis**, Suatu variabel memiliki kejelasan dalam penggunaannya dan membantu mengurangi potensi kesalahan tipe data selama pengembangan, sekaligus membantu mempermudah programmer lain dalam membaca `source-code` yg kita buat tersebut.

Sebagai contoh, Kita mulai dengan kata kunci `val` atau `var`, diikuti oleh `identifier`, titik dua, jenis, sama dengan `=` , dan nilai `inisialisasi`. contoh kodenya adalah seperti berikut:

```kotlin
val n: Int = 1

var p: Double = 1.2
```

Kita memberi tahu Kotlin bahwa `n` adalah [Int](https://en.wikipedia.org/wiki/Integer_(computer_science)) dan `p` adalah [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format), daripada membiarkannya [menginferensikan](https://en.wikipedia.org/wiki/Type_inference) data typenya sendiri.

Berikut beberapa jenis dasar `data-type` Kotlin:

```kotlin
// DataTypes/Types.kt

fun main() {

  val whole: Int = 11              // [1]

  val fractional: Double = 1.4     // [2]

  val trueOrFalse: Boolean = true  // [3]

  val words: String = "A value"    // [4]

  val character: Char = 'z'        // [5]

  val lines: String = """Triple quotes let

you have many lines

in your string"""                  // [6]

  println(whole)

  println(fractional)

  println(trueOrFalse)

  println(words)

  println(character)

  println(lines)

}

/* Output:

11

1.4

true

A value

z

Triple quotes let

you have many lines

in your string

*/

```

> [1] [Data Type](https://en.wikipedia.org/wiki/Data_type) [Int](https://en.wikipedia.org/wiki/Integer_(computer_science)) adalah bilangan bulat, yang berarti hanya dapat menyimpan angka bulat.
> [2] Untuk menyimpan angka pecahan, gunakan [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format).
> [3] [Data Type](https://en.wikipedia.org/wiki/Data_type) [Boolean](https://en.wikipedia.org/wiki/Boolean_data_type) hanya dapat menyimpan dua nilai khusus, true dan false.
> [4] [String](https://en.wikipedia.org/wiki/String_(computer_science)) menyimpan urutan karakter. Kita memberi nilai menggunakan [String](https://en.wikipedia.org/wiki/String_(computer_science)) yang diapit oleh tanda kutip ganda.
> [5] Char menyimpan satu karakter.
> [6] Jika Kita memiliki banyak baris dan/atau karakter khusus, apit-lah dengan tiga tanda kutip ganda `"""`

Kotlin menggunakan [Type inference](https://en.wikipedia.org/wiki/Type_inference) untuk menentukan makna dari data type campuran. Ketika mencampurkan [Int](https://en.wikipedia.org/wiki/Integer_(computer_science)) dan [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) selama penambahan, contoh ketika Kotlin menentukan jenis data:

```kotlin
// DataTypes/Inference.kt

fun main() {

  val n = 1 + 1.2

  println(n)

}

/* Output:

2.2

*/
```

Ketika Kita menambahkan [Int](https://en.wikipedia.org/wiki/Integer_(computer_science)) ke [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) menggunakan [inferensi tipe](https://en.wikipedia.org/wiki/Type_inference), Kotlin menentukan bahwa hasil `n` adalah [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) dan memastikan bahwa itu mengikuti semua aturan untuk [Double](https://en.wikipedia.org/wiki/Double-precision_floating-point_format).

[Inferensi tipe](https://en.wikipedia.org/wiki/Type_inference) pada Kotlin adalah bagian dari strategi Kotlin dalam menyingkat pekerjaan untuk programmer. Jika Kita menghilangkan [declaration](https://en.wikipedia.org/wiki/Declaration_(computer_programming)) type, Kotlin biasanya dapat [menginfer](https://en.wikipedia.org/wiki/Type_inference) kode tersebut.

[Sumber - Atomic Kotlin Sample](https://stepik.org/lesson/104305/step/1)