配列の概念と特性
配列(Array)は、同一データ型の複数の値を格納するためのコンテナです。データ格納時には暗黙的な型変換を考慮する必要があります。
配列の宣言方法
形式1:データ型[] 配列名
int[] numbers;
形式2:データ型 配列名[]
int numbers[];
静的初期化
int[] numbers = new int[]{10, 20, 30, 40};
// 簡略化形式
int[] values = {15, 25, 35, 45};
動的初期化
int[] scores = new int[5];
scores[0] = 95;
scores[1] = 80;
配列要素へのアクセス
public class ArrayAccessExample {
public static void main(String[] args) {
int[] data = {10, 20, 30, 40, 50};
// 要素の取得
int value = data[2];
System.out.println(value); // 30
// 要素の変更
data[2] = 35;
System.out.println(data[2]); // 35
}
}
配列の走査
public class ArrayTraversal {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int index = 0; index < numbers.length; index++) {
System.out.println(numbers[index]);
}
}
}
実践的な例題
最大値の検索
public class FindMaximum {
public static void main(String[] args) {
int[] values = {33, 5, 22, 44, 55};
int maximum = values[0];
for (int i = 1; i < values.length; i++) {
if (values[i] > maximum) {
maximum = values[i];
}
}
System.out.println("最大値: " + maximum);
}
}
要素の反転
public class ReverseArray {
public static void main(String[] args) {
int[] original = {1, 2, 3, 4, 5};
for (int start = 0, end = original.length - 1;
start < end; start++, end--) {
int temporary = original[start];
original[start] = original[end];
original[end] = temporary;
}
for (int element : original) {
System.out.print(element + " ");
}
}
}
メモリ管理と注意点
配列は作成後に長さを変更できません。不正なインデックスへのアクセスはArrayIndexOutOfBoundsExceptionを引き起こします。
int[] arr = new int[5];
System.out.println(arr[5]); // 実行時エラー
初期化方式の選択基準
- 静的初期化:具体的なデータが明確な場合
- 動的初期化:要素数は明確だがデータが未定の場合