Kotlin初心者のためのKotlinの型について


# はじめに
Kotlinを書くときに
**「この型ってどう書くんだっけ？」**
となっているKotlin初心者向けの記事になります！

今までJavaScript(動的型付け言語)を扱うことが多く
型を強く意識したことがありませんでした。
Android開発に携わり 「**何だこの書き方は！？**」 と静的型付けの書き方に戸惑うことが多く
自分が見返すため用の記事として書きました！


## 目次
 [プリミティブ型](#プリミティブ型)
 [リファレンス型](#リファレンス型)
 [Nullable型](#nullable型)
 [型推論](#型推論)
 [最後に](#最後に)


## プリミティブ型
プリミティブ型　・・・　最初から用意されている基本的な変数の型

- Double　・・・64bit浮動小数点数型
- Float　　・・・32bit浮動小数点数型
- Long　　・・・64bit整数型
- Int　　　・・・32bit整数型
- Short　　・・・16bit整数型
- Byte　　・・・8bit整数型
- Boolean　・・・64bit真偽値

:::note info
↑実務で使う代表的な型のみ紹介しています。
:::

<br/>
<br/>

プリミティブ型は、以下のように宣言することができます。

```diff_kotlin
val y: Double = 3.14

val a: Float = 3.14f

val b: Long = 1234567890123456789L

val c: Short = 123

val d: Byte = 12

val x: Int = 10

val z: Boolean = true
```

:::note info
↑④のLong型の値の最後にL、という文字が記載されていますが、値がLongであることを表したい時に記述するルールになっています。Float型も同様です。
:::


<br/>

## リファレンス型
リファレンス型　・・・配列やクラスのようにnew演算子を用いてオブジェクトを生成してから使用するデータ型

- String
- Array
- List
- Map


リファレンス型の宣言方法↓

```diff_kotlin
val str: String = "Hello, Kotlin!"

val array: Array<Int> = arrayOf(1, 2, 3)

val list: List<String> = listOf("apple", "banana", "orange")

val map: Map<String, Int> = mapOf("apple" to 100, "banana" to 200, "orange" to 300)
```
<br/>

## Nullable型
変数がnullを含む可能性があることを示します。

Nullable型の宣言方法↓

```diff_kotlin
val x: Int? = null
val y: String? = "Hello, Kotlin!"
```
<br/>


### 型推論
Kotlinは、初期値から型を類推する型推論という仕組みを持っています。
変数の型を明示的に宣言しなくても、コンパイラが自動的に型を推論してくれます。
ただし、**初期値とデータ型の両方を省略することはできない**ので注意。

```diff_kotlin
val x = 10 // xはInt型に推論される
val y = "Hello, Kotlin!" // yはString型に推論される
```
<br/>

### 最後に

すぐに見返すせるよう、Kotlinの型の早見表です。

| 型       | 説明                                 | 例                                   |
|----------|--------------------------------------|--------------------------------------|
| Int      | 32bit整数型                             | `val x: Int = 10`                   |
| Double   | 64bit浮動小数点数型                      | val x: Double = 3.14              |
| Float    | 32bit浮動小数点数型                       | `val x: Float = 3.14f`              |
| Long     | 64bit整数型                             | val x: Long = 10000000000         |
| Short    | 16bit整数型                             | `val x: Short = 10`                 |
| Byte     | 8bit整数型                            | val x: Byte = 0b1111111          |
| Char     | 文字型                               | `val x: Char = 'A'`                 |
| Boolean  | 真偽値型                             | val x: Boolean = true             |
| String   | 文字列型                             | `val x: String = "Hello, Kotlin!"`  |
| Array    | 配列型                               | val x: Array<Int> = arrayOf(1, 2) |
| List     | 不変のリスト型                       | `val x: List<String> = listOf("apple", "banana")` |
| MutableList | 可変のリスト型                     | val x: MutableList<String> = mutableListOf("apple", "banana") |
| Set      | 不変のセット型                       | `val x: Set<String> = setOf("apple", "banana")` |
| MutableSet | 可変のセット型                     | val x: MutableSet<String> = mutableSetOf("apple", "banana") |
| Map      | 不変のマップ型                       | `val x: Map<String, Int> = mapOf("apple" to 100, "banana" to 200)` |
| MutableMap | 可変のマップ型                     | val x: MutableMap<String, Int> = mutableMapOf("apple" to 100, "banana" to 200) |
| Any      | すべての型のスーパータイプ           | `val x: Any = "Hello, Kotlin!"`     |
| Unit     | 戻り値がないことを示す特別な型     | `fun printHello(): Unit { println("Hello") }` |
| Nullable型 | nullを含む可能性がある型            | val x: Int? = null               |



<br/>
<br/>

以上がKotlinの型についての基本的な説明となります。
Kotlinの型については、まだまだ細かい部分がありますが、
初心者の方にとって役に立つことを願っています。
<br/>
ありがとうございました！！