Kotlinにおける配列の初期化は、Javaや他言語の経験者ほど「思い込み」でつまずきやすいポイントです。
本記事では、Kotlin特有の配列設計思想を踏まえつつ、基本から実務でよく使うパターンまでを網羅的に解説します。
目次
Kotlinの配列の基本思想
配列(Array)は「固定長」
Kotlinの配列は サイズが固定 です。
val array = Array(3) { 0 }
- 要素数は後から変更できない
- 追加・削除は不可
ただし誤解されがちですが、要素の値自体は変更可能です。
val arr = arrayOf(1, 2, 3)
arr[0] = 10 // OK
サイズを変えたい場合は List を使う
val list = mutableListOf(1, 2, 3)
list.add(4)
arrayOf による基本的な初期化
値を直接指定する方法(最も一般的)
val numbers = arrayOf(1, 2, 3)
val fruits = arrayOf("apple", "banana", "orange")
- 型は自動推論される
- 可読性が高く、実務でも頻出
型を明示することもできます。
val numbers: Array<Int> = arrayOf(1, 2, 3)
空配列の作成
val empty1 = emptyArray<Int>()
val empty2 = arrayOf<Int>()
※ arrayOf() は 引数なしでも使用可能ですが、型引数を付けないと Array<Nothing> になりやすいため注意が必要です。
Array コンストラクタによる初期化(重要)
インデックスを使って初期値を生成
val squares = Array(5) { i -> i * i }
結果:
[0, 1, 4, 9, 16]
構文
Array(サイズ) { インデックス -> 初期値 }
よく使われる例:
val zeros = Array(10) { 0 }
val indices = Array(5) { it }
null で初期化する配列
val array = arrayOfNulls<String>(5)
- 型は
Array<String?> - Javaとの相互運用やキャッシュ用途でよく使われる
プリミティブ型専用配列(非常に重要)
Kotlinでは、パフォーマンス最適化のため、プリミティブ型専用の配列クラスが用意されています。
| 型 | 専用配列 |
|---|---|
| Int | IntArray |
| Long | LongArray |
| Double | DoubleArray |
| Boolean | BooleanArray |
| Char | CharArray |
IntArray の初期化例
val nums1 = IntArray(5)
val nums2 = IntArray(5) { it * 2 }
Array<Int> との違い
val a1 = arrayOf(1, 2, 3) // Array<Int>
val a2 = intArrayOf(1, 2, 3) // IntArray
| 項目 | Array | IntArray |
|---|---|---|
| 内部表現 | オブジェクト | プリミティブ |
| null | 不可(Int?なら可) | 不可 |
| パフォーマンス | 通常 | 高速 |
数値処理やループが多い場面では IntArray が推奨されます。
型が混在する配列
val mixed = arrayOf(1, "text", true)
この場合、型は Array<Any> になります。
- コンパイルは通る
- 型安全性が低下するため、実務では非推奨
多次元配列の初期化
2次元配列(Array of Array)
val matrix = Array(3) {
Array(4) { 0 }
}
- 3行 × 4列
- 各行は別インスタンスなので安全
数値向けの2次元配列
val matrix = Array(3) {
IntArray(4)
}
競技プログラミングや数値計算で定番です。
参照共有に注意(NG例)
val row = IntArray(3)
val matrix = Array(3) { row } // 全行が同じ参照
正しい書き方
val matrix = Array(3) { IntArray(3) }
配列と List の変換(実務で頻出)
val list = listOf(1, 2, 3)
val array: Array<Int> = list.toTypedArray()
val intArray: IntArray = list.toIntArray()
実務でよく使う初期化パターン集
val flags = BooleanArray(10)
val counter = IntArray(26)
val chars = CharArray(5) { 'a' }
val cache = arrayOfNulls<String>(100)
配列と List の使い分けまとめ
| 用途 | 推奨 |
|---|---|
| サイズ固定 | Array / IntArray |
| 高速な数値処理 | IntArray |
| 追加・削除あり | MutableList |
| 読み取り専用 | List |
まとめ
- Kotlinの配列は 固定長だが要素は変更可能
- 初期値指定 →
arrayOf - 計算生成 →
Array(size) { } - 数値配列 →
IntArray系を優先 - null を含めたい場合は
Array<T?> - サイズ変更が必要なら
MutableList
以上、Kotlinの配列の初期化についてでした。
最後までお読みいただき、ありがとうございました。










