※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

6-5. 配列 (Array)

2023年8月1日

概要

配列(Array)は、同様な種類のデータのコレクションを保持するために利用されます。値ごとに別の変数を用意するのではなく、複数の値を1つの配列に保持できます。

配列の種類

いずれも配列のインデックスは 0 から始まります。

一般的な型の配列

Array<型>(要素の数) {初期値}
型名 (クラス)配列の要素の形作成する際の関数
Array<型> で指定
数値型以外も指定可能
arrayOf()
arrayOfNulls()

プリミティブ型の配列

型名 (クラス)配列の要素の型作成する際の関数
IntArrayInt 型intArrayOf()
ShotArrayShort 型shortArrayOf()
LongArrayLong 型longArrayOf()
ByteArrayByte 型byteArrayOf()
BooleanArrayBoolean 型booleanArrayOf()
FloatArrayFloat 型floatArrayOf()
DoubleArrayDouble 型doubleArrayOf()
CharArrayChar 型charArrayOf()

一般的な型とプリミティブ型の違い

Kotlin だと数値型は基本的にオブジェクトです。
プリミティブ型の配列の場合は いわゆる数値だけの配列となりますが、一般的な型の配列は オブジェクトの配列になります。

boxing の際のオーバヘッドなしで作成できるのが、プリミティブ型の配列となります。

補足

Java では、int などの基本形 (プリミティブ型) と、基本形のラッパーとして Integer などの参照型オブジェクトがあります。参照型オブジェクトにするとメソッドが使えます。
プリミティブ型から参照型オブジェクトを作成することを boxing (ボクシング) といいます。
(逆の処理は unboxing)

Kotlin は、JVM 上で動作するバイトコードへのコンパイルされますが、Int などの数値型は、必要に応じて内部的にプリミティブ型として扱われます。

配列オブジェクトを作成する関数と例

空の配列を作成

一般的な型の配列

val array1 = arrayOf<Int>()
val array2 = arrayOf<Double>()

プリミティブ型の配列

val array1 = intArrayOf()
val array2 = doubleArrayOf()

サイズだけ指定して作成

プリミティブ型の配列は、サイズだけ指定して作成することができます。各要素の値は 0 で初期化されます。
CharArray は null文字(`\u0000\’) で初期化されます。参照

val arrayI = IntArray(5)
val arrayS = ShortArray(5)
val arrayL = LongArray(5)
val arrayBy = ByteArray(5)
val arrayBo = ByteArray(5)
val arrayF = FloatArray(5)
val arrayD = DoubleArray(5)
val arrayC = CharArray(5)

初期値を明示して作成

一般的な型の配列

val array1 : Array<Int> = arrayOf(1, 2, 3, 4, 5, 6)
val array : Array = arrayOf("Hello", "world", "!")  //要素の型を省略。要素から型推論

プリミティブ型の配列

val array2 : IntArray = intArrayOf(1, 2, 3, 4, 5)

null で初期化された配列を作成

一般的な方の配列に すべての要素を null で初期化した配列を作る関数 arrayOfNulls() というものがあります。

val array1 : Array<Int?> = arrayOfNulls(5)

試しに出力させると null と表示されます。

例) IntelliJ IDEA の PEAL で実行

Welcome to Kotlin version 1.9.0-release-358 (JRE 1.8.0_362-b08)
Type :help for help, :quit for quit

val array1 : Array<Int?> = arrayOfNulls(5)
 println(array1[0])
 println(array1[1])
 println(array1[2])
 println(array1[3])
 println(array1[4])
nullnullnullnullnull

Kotlin Playground で実行

公式サイトの情報

https://kotlinlang.org/docs/arrays.html