Javaにおける配列の初期化:コード解説
Javaにおける配列の初期化
Javaでは、配列を初期化する方法は主に2つあります。
方法1: 配列のサイズを指定して初期化
この方法では、配列の要素数を指定してメモリを確保し、各要素の初期値はデフォルト値(数値型の場合は0、boolean型の場合はfalse、参照型の場合はnull)になります。
int[] numbers = new int[5]; // 整数型の配列を宣言し、5つの要素を確保
int[] numbers
: 整数型の配列を格納する変数numbers
を宣言します。new int[5]
: 5つの整数型の要素を持つ配列を新しく作成し、その参照をnumbers
に代入します。
方法2: 初期値を指定して配列を初期化
この方法では、配列の要素の初期値を直接指定します。配列のサイズは指定する要素の数によって自動的に決定されます。
String[] names = {"Alice", "Bob", "Charlie"}; // 文字列型の配列を宣言し、初期値を指定
{"Alice", "Bob", "Charlie"}
: 初期値として3つの文字列を指定します。
配列の要素へのアクセス
配列の要素にアクセスするには、インデックスを使用します。インデックスは0から始まります。
int firstNumber = numbers[0]; // 配列の最初の要素を取得
String secondName = names[1]; // 配列の2番目の要素を取得
重要なポイント
- 配列のサイズは一度決定すると変更できません。
- 配列のインデックスは範囲外にならないように注意してください。インデックスは0から配列の長さ-1までの値でなければなりません。
- 配列はオブジェクトであり、参照型です。配列をコピーする場合は、配列の内容をコピーする必要があります。
例
public class ArrayExample {
public static void main(String[] args) {
// 方法1
int[] numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
// 方法2
String[] fruits = {"apple", "banana", "orange"};
// 配列の要素を出力
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
int[] numbers = new int[5]; // 整数型の配列を宣言し、5つの要素を確保
new int[5]
: 5つの整数型の要素を持つ新しい配列を作成し、その参照をnumbers
に代入します。この時点では、各要素の初期値は 0 です。
String[] names = {"Alice", "Bob", "Charlie"}; // 文字列型の配列を宣言し、初期値を指定
コード例3: 配列の要素へのアクセスと代入
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[0] = 10;
: 配列numbers
の最初の要素 (インデックス 0) に 10 を代入します。
コード例4: 配列の要素を出力
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
for
ループを使って、配列numbers
のすべての要素を出力します。i
はインデックスを表し、0 からnumbers.length - 1
まで繰り返します。System.out.println(numbers[i])
: 各要素の値を出力します。
コード例5: foreachループによる出力
for (String fruit : fruits) {
System.out.println(fruit);
}
fruit
には、配列の各要素の値が順番に代入されます。
注意:
- 配列のインデックスは 0 から始まります。
- 配列のインデックスが範囲外になると
ArrayIndexOutOfBoundsException
が発生します。
代替方法1: Arrays.fill()による初期化
配列のすべての要素を同じ値で初期化する場合に便利です。
import java.util.Arrays;
int[] numbers = new int[5];
Arrays.fill(numbers, -1); // すべての要素を-1で初期化
Arrays.fill(配列名, 値)
: 指定した配列のすべての要素を指定した値で埋めます。
代替方法2: 二次元配列の初期化
多次元配列を初期化する場合、ネストされた配列を使用します。
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] matrix
: 二次元整数配列を宣言します。{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
: 各行の要素を指定します。
代替方法3: Stream APIによる初期化
Java 8以降、Stream APIを使用して配列を初期化できます。
import java.util.stream.IntStream;
int[] numbers = IntStream.range(1, 6).toArray(); // 1から5までの整数で配列を作成
IntStream.range(開始値, 終了値)
: 指定した範囲の整数ストリームを作成します。toArray()
: ストリームを配列に変換します。
代替方法4: コピーによる初期化
既存の配列から新しい配列を作成する場合、clone()
メソッドを使用できます。ただし、これは浅いコピーであるため、元の配列の要素を変更すると、コピーされた配列の要素も変更されます。
int[] original = {1, 2, 3};
int[] copy = original.clone();
original.clone()
: 配列original
のコピーを作成します。
Arrays.fill()
は配列のすべての要素を同じ値で初期化するのに効率的です。- 二次元配列は、行列や表などのデータを表現するのに便利です。
- Stream APIは、関数型プログラミングのスタイルで配列を作成するのに適しています。
- 配列のコピーには注意が必要で、深いコピーが必要な場合は別の方法を検討する必要があります。
java arrays initialization