【2026年7月最新】Java配列完全ガイド|宣言・初期化・要素操作・多次元配列・ArrayListまで徹底解説
この記事の内容
「Javaの配列ってどう書くの?」「宣言と初期化の違いが分からない」「ArrayListと何が違うのか混乱している」——Javaを学ぶ上で配列(Array)は最初の壁になりやすいテーマです。しかし基本を一度押さえてしまえば、データ処理のコアとして何度も活用できる重要な知識です。
この記事では、Java配列の宣言・初期化・要素アクセス・要素数取得・for文繰り返し・多次元配列・ソート・ArrayListとの比較まで、非エンジニアでも理解できるレベルで完全解説します。さらにClaude Codeを使った配列処理の自動化まで踏み込み、実業務への応用方法もご紹介します。
01 WHAT IS ARRAY 配列とは何か(リスト・コレクションとの違い) 「データの棚」をイメージするとすべてが分かる
📚 用語解説
配列(Array):Javaで同じデータ型の複数の値を一つの変数にまとめて格納するためのデータ構造。棚の番号(インデックス)で各要素にアクセスする。配列のサイズは作成時に固定され、後から変更できないのが最大の特徴。
配列を一言で説明すると、「同じ種類のデータを番号付きで並べて管理する箱」です。例えば、5人の社員の点数を管理したい場合、変数を5個作るよりも、5枠の配列を1個作る方がコードがシンプルになります。
| 方法 | 変数の書き方 | 要素数が増えたとき |
|---|---|---|
| 変数を個別に宣言 | int score1, score2, score3 ... | 変数を追加する必要あり |
| 配列を使う | int[] scores = new int[5] | サイズ変更(※後述) |
配列はデータを「連続したメモリ領域」に格納します。これにより、インデックス番号で瞬時に特定要素にアクセスできる高速なランダムアクセスが可能になります。
📚 用語解説
インデックス:配列の各要素に割り振られた番号(添え字)。Javaの配列は0始まり(0オリジン)で、最初の要素はインデックス0、2番目はインデックス1となる。棚の「番号札」に相当。
1-1. 配列・リスト・コレクションの違い
| データ構造 | 特徴 | 主な用途 |
|---|---|---|
| 配列(Array) | 固定長・高速アクセス・プリミティブ型OK | 要素数が決まっているデータ |
| ArrayList | 可変長・追加削除が容易・オブジェクト型のみ | 要素数が変わるデータ |
| LinkedList | 追加削除が高速・ランダムアクセスは遅い | 頻繁な挿入・削除 |
| HashSet | 重複なし・順序なし | ユニークデータの管理 |
| HashMap | キーと値のペア | 辞書・連想配列的な用途 |
業務システム開発では、配列とArrayListが最も頻繁に使われます。「要素数が最初から決まっている=配列」「要素数が動的に変わる=ArrayList」というのが基本の使い分けです。
02 DECLARATION 配列の宣言方法(型[] 変数名) 型と変数名を正しく書くだけでOK
Javaで配列を宣言するには、データ型の後に[](角括弧)を付けます。宣言はあくまでも「この変数は配列を入れる変数です」という宣言であり、この段階ではメモリの確保は行われません。
// 基本的な配列の宣言 int[] scores; // int型の配列変数を宣言 String[] names; // String型の配列変数を宣言 double[] prices; // double型の配列変数を宣言 boolean[] flags; // boolean型の配列変数を宣言 // 別の書き方(C言語スタイル) int scores[]; // こちらも有効だがJavaでは非推奨
📚 用語解説
プリミティブ型:Javaの基本的なデータ型。int(整数)、double(小数)、boolean(真偽値)、char(文字)、byte、short、long、floatの8種類。クラスのインスタンスではなく、値そのものを直接格納する。配列はプリミティブ型とオブジェクト型どちらでも使える。
配列の宣言でよく使われる型の組み合わせは以下の通りです。
Java配列の変数名は慣習として複数形にするのが読みやすいコードの第一歩です。score より scores、name より names、price より prices のように複数形にすることで「これは複数のデータを持つ配列」と一目で分かります。
03 INITIALIZATION 配列の初期化(newとリテラル初期化) 2つのパターンを使い分ける
Java配列の初期化には2つのパターンがあります。「new演算子を使う方法」と「リテラル(初期値)を直接書く方法」です。どちらも最終的に同じ配列ができますが、使う場面が異なります。
3-1. new演算子による初期化
new演算子を使うと、指定したサイズの配列を確保し、各要素にはデフォルト値(int型なら0、boolean型ならfalse、String型ならnull)がセットされます。要素数が決まっているが初期値が未定の場合に使います。
// new演算子で配列を初期化(サイズ5のint配列) int[] scores = new int[5]; // scores[0]=0, scores[1]=0, scores[2]=0, scores[3]=0, scores[4]=0 // 宣言と初期化を分けて書くことも可能 int[] scores; scores = new int[5]; // 後から初期化 // 各要素に値を代入 scores[0] = 85; scores[1] = 92; scores[2] = 78; scores[3] = 95; scores[4] = 88;
📚 用語解説
new演算子:Javaでオブジェクトやデータ構造のメモリ領域を確保するためのキーワード。「new int[5]」は「int型の値を5個格納できる領域を確保してください」という指示。Javaでは配列もオブジェクト扱いになるため、newが必要になる。
3-2. リテラル初期化(初期値を直接書く)
初期値が最初から分かっている場合は、中括弧{}の中に値をカンマ区切りで並べるリテラル初期化が便利です。サイズは自動的に要素数に合わせられるため、new演算子もサイズ指定も不要です。
// リテラル初期化(初期値を直接指定)
int[] scores = {85, 92, 78, 95, 88};
// String型の例
String[] weekdays = {"月", "火", "水", "木", "金", "土", "日"};
// double型の例
double[] taxes = {0.08, 0.10};
// 宣言済みの変数に後からリテラル代入はできない
int[] scores;
scores = {85, 92, 78}; // コンパイルエラー!
// 後から代入する場合はnewが必要
scores = new int[]{85, 92, 78}; // こちらはOK
宣言済みの配列変数にリテラル({...})だけで代入しようとするとコンパイルエラーになります。後から代入する場合は必ず「new int[]{...}」のように new 型[] を付けてください。
int[] scores;
変数の枠だけ作る
new int[5]
空の棚を確保
scores[0]=85
各棚に値を入れる
リテラル初期化は上記フローを一気に行うショートカットです。値が最初から決まっているなら積極的に使いましょう。
04 ELEMENT ACCESS 要素へのアクセスとインデックス インデックスは0始まり——ここを間違えると実行時エラー
配列の各要素にアクセスするには、変数名の後に角括弧[]でインデックス番号を指定します。重要なのはインデックスが0から始まるという点です。要素が5個の配列なら、インデックスは0〜4です。
int[] scores = {85, 92, 78, 95, 88};
// 要素の取得
System.out.println(scores[0]); // 85(最初の要素)
System.out.println(scores[1]); // 92(2番目の要素)
System.out.println(scores[4]); // 88(最後の要素)
// 要素の変更
scores[2] = 80;
System.out.println(scores[2]); // 80(変更後)
// インデックスに変数を使うことも可能
int idx = 3;
System.out.println(scores[idx]); // 95
要素数5の配列に対してscores[5]を参照しようとすると、実行時に「ArrayIndexOutOfBoundsException」が発生します。これはJavaで最も頻繁に遭遇するエラーの1つです。「インデックスは0から始まり、最大値は要素数-1」を必ず覚えてください。
📚 用語解説
ArrayIndexOutOfBoundsException:配列の有効なインデックス範囲を超えてアクセスしようとしたときに発生するJavaの実行時例外。コンパイルエラーではなく実行時エラーなので、プログラムが動いている最中に突然クラッシュする。インデックスの境界チェックを怠ると発生しやすい。
05 LENGTH 配列の要素数(length) scores.length で要素数を取得する
配列の要素数を取得するには、配列変数名.length を使います。メソッドではなくフィールド(プロパティ)なので、括弧()は不要です。これを知らないとfor文でインデックスの上限を書くのに困ります。
int[] scores = {85, 92, 78, 95, 88};
// 要素数の取得
System.out.println(scores.length); // 5
// 最後の要素へのアクセス(scores.length - 1 がポイント)
System.out.println(scores[scores.length - 1]); // 88
// String配列の場合も同じ
String[] names = {"田中", "鈴木", "山田"};
System.out.println(names.length); // 3
📚 用語解説
length(レングス):配列の要素数を表すJavaの組み込みフィールド(プロパティ)。配列名.lengthで参照できる。注意点として、Stringのlength()はメソッド(括弧あり)だが、配列のlengthはフィールド(括弧なし)という違いがある。混同しやすいので注意。
scores.lengthはfor文のループ上限に使うのが最も典型的な用途です。配列のサイズをハードコーディング(直書き)せずにlengthを使うことで、配列のサイズが変わってもfor文を書き直す必要がなくなります。
// 悪い例:ハードコーディング
for (int i = 0; i < 5; i++) { // 要素数が変わったら修正が必要
System.out.println(scores[i]);
}
// 良い例:lengthを使う
for (int i = 0; i < scores.length; i++) { // サイズが変わっても修正不要
System.out.println(scores[i]);
}
06 ITERATION for文とfor-each文での繰り返し処理 全要素を処理するループの書き方
配列の全要素に対して処理を行うには、for文またはfor-each文(拡張for文)を使います。どちらも配列の繰り返し処理に使えますが、使う場面が異なります。
6-1. インデックス付きfor文
インデックス(i)を使うfor文は、要素の位置(何番目か)を使いたいときや、一部の要素だけ処理したいときに使います。
int[] scores = {85, 92, 78, 95, 88};
// 全要素を順番に出力
for (int i = 0; i < scores.length; i++) {
System.out.println((i + 1) + "番目のスコア: " + scores[i]);
}
// 出力:
// 1番目のスコア: 85
// 2番目のスコア: 92
// 3番目のスコア: 78
// 4番目のスコア: 95
// 5番目のスコア: 88
// 合計と平均を求める
int sum = 0;
for (int i = 0; i < scores.length; i++) {
sum += scores[i];
}
double average = (double) sum / scores.length;
System.out.println("合計: " + sum); // 合計: 438
System.out.println("平均: " + average); // 平均: 87.6
6-2. for-each文(拡張for文)
for-each文はインデックスが不要な場合に、よりシンプルに書けます。「各要素を順番に取り出して処理する」という意味が明確で、コードが読みやすくなります。
int[] scores = {85, 92, 78, 95, 88};
// for-each文(拡張for文)
for (int score : scores) {
System.out.println(score);
}
// 読み方: 「scoresの各要素をscoreとして処理する」
// String配列でも同様
String[] names = {"田中", "鈴木", "山田"};
for (String name : names) {
System.out.println(name + "さん");
}
| ループ種別 | 書き方 | 向いている場面 |
|---|---|---|
| インデックスfor文 | for (int i = 0; i < arr.length; i++) | インデックスが必要・逆順ループ・一部要素処理 |
| for-each文 | for (型 変数 : 配列) | 全要素を順番に処理するだけ・コードを短くしたい |
配列を逆順(末尾から先頭)に処理したい場合は、for-each文では実現できません。「for (int i = scores.length - 1; i >= 0; i--)」のようにインデックスfor文を使います。
07 MULTIDIMENSIONAL 多次元配列(2次元配列) 表・マトリクスデータの扱い方
Javaでは2次元・3次元の多次元配列を扱えます。最もよく使われるのは2次元配列で、表形式のデータ(売上月次表、座席表、ゲームのグリッドなど)を管理するのに便利です。
📚 用語解説
2次元配列:行と列の2軸でデータを管理するデータ構造。「配列の配列」とも言える。matrix[行インデックス][列インデックス]という形でアクセスし、Excelの表のようなデータ管理に使われる。
// 2次元配列の宣言と初期化
int[][] matrix = {
{1, 2, 3}, // 0行目
{4, 5, 6}, // 1行目
{7, 8, 9} // 2行目
};
// 要素へのアクセス: [行][列]
System.out.println(matrix[0][0]); // 1(0行0列)
System.out.println(matrix[1][1]); // 5(1行1列)
System.out.println(matrix[2][2]); // 9(2行2列)
// 行数と列数
System.out.println(matrix.length); // 3(行数)
System.out.println(matrix[0].length); // 3(0行目の列数)
7-1. 2次元配列のnew演算子による初期化
// newで2次元配列を確保(3行4列) int[][] salesData = new int[3][4]; // 月次売上データの例(3ヶ月 × 4週) salesData[0][0] = 120; // 1ヶ月目 1週目 salesData[0][1] = 135; // 1ヶ月目 2週目 salesData[0][2] = 98; // 1ヶ月目 3週目 salesData[0][3] = 145; // 1ヶ月目 4週目 // ...以下略
7-2. 2次元配列の繰り返し処理(二重for文)
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 二重for文で全要素を出力
for (int i = 0; i < matrix.length; i++) { // 行のループ
for (int j = 0; j < matrix[i].length; j++) { // 列のループ
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // 改行
}
// 出力:
// 1 2 3
// 4 5 6
// 7 8 9
int[行][列]
表形式データ
i: 行を走査
matrix.length
j: 列を走査
matrix[i].length
matrix[i][j]
個別値にアクセス
Javaの2次元配列は各行の列数が異なる「ジャグ配列(jagged array)」が作れます。matrix[0]とmatrix[1]の列数が違う場合でも動作しますが、処理が複雑になるため、通常は全行の列数を揃えることをお勧めします。
08 SORTING 配列のソート(Arrays.sort) 1行で並び替えを実現する標準ライブラリ
Javaには配列をソート(並び替え)するためのArrays.sort()というメソッドが標準ライブラリに用意されています。自分でソートアルゴリズムを実装する必要はありません。
📚 用語解説
Arrays.sort():java.util.Arraysクラスに含まれるソートメソッド。int・double等のプリミティブ型配列には高速なデュアルピボットクイックソート、オブジェクト配列にはTimsortを使用する。使用前に「import java.util.Arrays;」が必要。
import java.util.Arrays;
public class ArraySortExample {
public static void main(String[] args) {
// int配列の昇順ソート
int[] scores = {85, 92, 78, 95, 88};
Arrays.sort(scores);
System.out.println(Arrays.toString(scores));
// 出力: [78, 85, 88, 92, 95]
// String配列のソート(辞書順)
String[] names = {"田中", "鈴木", "山田", "佐藤"};
Arrays.sort(names);
System.out.println(Arrays.toString(names));
// 辞書順でソートされる
// 部分的にソート(インデックス1から3まで)
int[] data = {5, 3, 1, 4, 2};
Arrays.sort(data, 1, 4); // インデックス1〜3をソート
System.out.println(Arrays.toString(data));
// 出力: [5, 1, 3, 4, 2]
}
}
8-1. 降順ソートの方法
Arrays.sort()はデフォルトで昇順ソートです。降順(大きい順)にしたい場合は、プリミティブ型(int[])では一手間必要です。
import java.util.Arrays;
import java.util.Collections;
// Integer配列(オブジェクト型)なら逆順に直接対応
Integer[] scores = {85, 92, 78, 95, 88};
Arrays.sort(scores, Collections.reverseOrder());
System.out.println(Arrays.toString(scores));
// 出力: [95, 92, 88, 85, 78]
// int[](プリミティブ型)の場合は手動で逆転させる
int[] primitiveScores = {85, 92, 78, 95, 88};
Arrays.sort(primitiveScores);
// 昇順ソート後に逆転
for (int i = 0; i < primitiveScores.length / 2; i++) {
int temp = primitiveScores[i];
primitiveScores[i] = primitiveScores[primitiveScores.length - 1 - i];
primitiveScores[primitiveScores.length - 1 - i] = temp;
}
System.out.println(Arrays.toString(primitiveScores));
// 出力: [95, 92, 88, 85, 78]
配列の内容を確認したいとき、System.out.println(scores)とすると「[I@1b6d3586」のような参照アドレスが表示されます。Arrays.toString(scores)を使うと「[85, 92, 78, 95, 88]」と中身が表示されます。デバッグ時に必須のメソッドです。
09 ARRAYLIST ArrayListとの違い・使い分け 固定長の配列か、可変長のArrayListか
Javaで複数のデータを扱う際、配列と並んでよく使われるのがArrayListです。2つの最大の違いは「サイズが固定か変更可能か」です。
| 比較軸 | 配列(Array) | ArrayList |
|---|---|---|
| サイズ | 作成時に固定・変更不可 | 後から追加・削除が可能 |
| 型の制約 | プリミティブ型OK(int, double等) | オブジェクト型のみ(Integer, Double等) |
| アクセス速度 | 非常に高速(O(1)) | 高速(O(1))※ほぼ同等 |
| 追加・削除 | 直接はできない(コピー操作が必要) | add()・remove()メソッドで簡単 |
| メモリ効率 | 固定長で無駄がない | 余分な領域を確保するため少し多い |
| null格納 | 可能 | 可能 |
| 主な用途 | 固定数のデータ(週7日、月12ヶ月等) | 件数が変動するデータ(ユーザーリスト等) |
import java.util.ArrayList; // 配列(固定長) int[] fixedArray = new int[5]; fixedArray[0] = 10; // fixedArray[5] = 60; // エラー! 範囲外 // ArrayList(可変長) ArrayListdynamicList = new ArrayList<>(); dynamicList.add(10); dynamicList.add(20); dynamicList.add(30); System.out.println(dynamicList.size()); // 3(sizeメソッドで要素数) dynamicList.remove(1); // インデックス1の要素を削除 System.out.println(dynamicList); // [10, 30] dynamicList.add(50); System.out.println(dynamicList.size()); // 3(また3になった)
9-1. 配列とArrayListの変換
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
// 配列 → ArrayList
String[] array = {"A", "B", "C"};
ArrayList list = new ArrayList<>(Arrays.asList(array));
list.add("D");
System.out.println(list); // [A, B, C, D]
// ArrayList → 配列
String[] backToArray = list.toArray(new String[0]);
System.out.println(Arrays.toString(backToArray)); // [A, B, C, D]
📚 用語解説
ジェネリクス(型パラメータ):ArrayList<Integer> や ArrayList<String> の<>内に書く型指定のこと。「この ArrayList は Integer 型だけ入れる」と明示することで、型の混入ミスをコンパイル時に検出できる。Java 5以降の標準機能。
迷ったらArrayListを使いましょう。現代のJava開発では、件数が最初から固定と確定している場合(月の配列=12固定、週の配列=7固定など)以外は、ArrayListの方が保守しやすいコードになります。パフォーマンスが最優先の場合のみ、プリミティブ型配列を検討します。
10 BUSINESS USE 業務での配列活用例 実際の業務システムで配列がどう使われるか
Java配列は、業務システムの様々な場面で活用されています。単純なデータ格納だけでなく、計算処理・データ検索・集計など多様な用途があります。ここでは実務に近い例を紹介します。
10-1. 月次売上集計
// 月次売上データの集計
int[] monthlySales = {
150000, 180000, 210000, 190000, 220000, 240000,
200000, 230000, 260000, 180000, 200000, 350000
};
int totalSales = 0;
int maxSales = monthlySales[0];
int minSales = monthlySales[0];
int maxMonth = 0;
for (int i = 0; i < monthlySales.length; i++) {
totalSales += monthlySales[i];
if (monthlySales[i] > maxSales) {
maxSales = monthlySales[i];
maxMonth = i + 1; // 月(1月=1)
}
if (monthlySales[i] < minSales) {
minSales = monthlySales[i];
}
}
double averageSales = (double) totalSales / monthlySales.length;
System.out.println("年間売上合計: " + totalSales + "円");
System.out.println("月平均売上: " + (int)averageSales + "円");
System.out.println("最高売上月: " + maxMonth + "月(" + maxSales + "円)");
System.out.println("最低売上月: " + minSales + "円");
10-2. 点数のランク判定
// テストスコアのランク判定(配列で閾値を管理)
int[] scores = {85, 52, 93, 67, 78, 41, 99, 74};
String[] grades = {"F", "D", "C", "B", "A", "S"};
int[] thresholds = {0, 40, 60, 70, 80, 90};
for (int score : scores) {
String grade = grades[0];
for (int i = thresholds.length - 1; i >= 0; i--) {
if (score >= thresholds[i]) {
grade = grades[i];
break;
}
}
System.out.println("スコア" + score + ": " + grade + "ランク");
}
10-3. 在庫管理での使用例
// 商品在庫チェック
String[] itemNames = {"商品A", "商品B", "商品C", "商品D"};
int[] stockQuantity = {50, 0, 15, 8};
int[] reorderLevel = {20, 10, 10, 5}; // 発注点
System.out.println("=== 在庫アラート ===");
for (int i = 0; i < itemNames.length; i++) {
if (stockQuantity[i] == 0) {
System.out.println("[欠品] " + itemNames[i]);
} else if (stockQuantity[i] <= reorderLevel[i]) {
System.out.println("[要発注] " + itemNames[i]
+ "(残り" + stockQuantity[i] + "個)");
}
}
実際の業務開発では、商品名と在庫数を別々の配列で管理するより、「Productクラス(name, stock, reorderLevel)」のようにクラスに包んでArrayListで管理する設計が一般的です。配列の基礎を学んだ次のステップとして、オブジェクト指向設計を学ぶことをお勧めします。
11 CLAUDE CODE Claude Codeで配列処理を自動化 AIが配列コードの生成・デバッグ・リファクタリングを担う
Java配列の基礎を理解したら、次はClaude Codeを活用して配列処理の自動化・効率化を実現しましょう。Claude Codeは、コードの生成・デバッグ・リファクタリングを対話的に行えるAIコーディングアシスタントです。
📚 用語解説
Claude Code:Anthropic社が提供するターミナルベースのAIコーディングアシスタント。ファイル操作・コマンド実行・コード生成を自律的に行う。JavaのコードをIDEなしでも生成・実行・修正できるため、非エンジニアでも実務的なコードを書けるようになる。
11-1. Claude Codeへの具体的な依頼方法
Claude Codeに配列処理を依頼する際は、具体的なデータ形式・処理内容・出力形式を明示することがポイントです。以下のような依頼が効果的です。
11-2. Claude Codeが得意な配列作業
| 作業内容 | Claude Codeに頼む効果 |
|---|---|
| 配列の初期化・宣言コード生成 | データ仕様を伝えるだけで完全なコードを生成 |
| ソート・集計ロジックの実装 | ビジネスロジックを日本語で説明すると実装してくれる |
| ArrayIndexOutOfBoundsException対応 | エラーコードを貼ると原因特定と修正コードを提示 |
| 配列→ArrayListへのリファクタリング | 既存コードを渡すだけで変換案を提示 |
| 2次元配列の表形式出力 | 出力形式(表、CSV等)を指定すると実装 |
| 単体テストコードの生成 | メソッドを渡すとJUnitのテストケースを自動生成 |
# Claude Codeへの依頼例(ターミナルでの入力) $ claude > 以下の仕様のJavaコードを書いてください: > - String配列で商品名(5件)を管理 > - int配列で対応する売価を管理 > - 売価の降順で商品名と売価を出力する > - メインメソッドを含む完全なクラスとして # Claude Codeがコードを生成・確認・実行まで行う
どんなデータを
どう処理したいか
日本語で仕様を
説明する
完全なJavaコードを
自動生成
エラー時は
自動修正
本番システムへ
統合
AI鬼管理では、Claude Codeを活用して業務システムの配列処理・データ集計・自動レポート生成を実践しています。「Javaは書けないけどデータ処理を自動化したい」という方向けに、Claude Codeを使った業務自動化の導入支援を行っています。
12 SUMMARY まとめ:Java配列の基礎から業務活用まで 押さえておくべきポイントを最終整理
Javaの配列は基礎中の基礎ですが、業務システム開発では繰り返し登場する重要な要素です。基本をしっかり押さえた上で、ArrayListやStreamAPIへと応用の幅を広げていきましょう。
Java配列の業務活用、Claude Codeと一緒に始めませんか
「Javaのコードを書けるようになりたい」「業務データの処理を自動化したい」という方向けに、AI鬼管理ではClaude Codeを使った業務自動化の導入支援を行っています。配列処理から始まるデータ自動化の第一歩を、一緒に踏み出しましょう。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
AI活用を自社で回せるようになりたい方へ
AI鬼管理
Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。
よくある質問
Q. Java配列の宣言と初期化の違いは何ですか?
A. 宣言は「この変数は配列を格納する変数です」という型と変数名の定義(例: int[] scores;)。初期化はメモリ領域を確保して実際に使えるようにすること(例: scores = new int[5];)。宣言だけした状態では配列は使えず、初期化が必要です。
Q. Javaの配列のインデックスが0から始まる理由は何ですか?
A. インデックスを「先頭要素からの距離(オフセット)」と考えると自然です。先頭要素自体はオフセットが0なので[0]。この設計はC言語の伝統を引き継いだもので、メモリ計算の効率が良い設計です。
Q. ArrayIndexOutOfBoundsExceptionを防ぐ方法は?
A. ループ条件を「i < array.length」にする(i <= array.length は境界外)、インデックスに負の数が来ないようにする、for-each文を積極的に使うことで防げます。また、array.lengthで事前に要素数を確認する習慣も重要です。
Q. 配列のサイズを後から変更できますか?
A. Javaの配列は一度作成するとサイズを変更できません。サイズを変えたい場合は、新しいサイズの配列を作ってコピーするか、最初からArrayListを使うのが適切です。Arrays.copyOf()メソッドを使うと配列のコピーとリサイズが1行で書けます。
Q. 配列とArrayListはどちらを使うべきですか?
A. 要素数が最初から固定なら配列、後から増減するなら ArrayList が適切です。迷ったら ArrayList を選んでおくと保守しやすいコードになります。パフォーマンスが最優先の場合のみ、プリミティブ型配列の使用を検討します。
Q. 2次元配列と1次元配列の使い分けは?
A. 1次元配列は「ひとつの列のデータ(スコア一覧・名前リスト等)」、2次元配列は「表形式のデータ(月×週の売上、行×列のマトリクス)」に使います。表形式でないデータを無理に2次元にするとコードが複雑になるため、データの形に合わせて選んでください。
Q. Claude Codeで配列処理コードを書いてもらうにはどうすればいいですか?
A. ターミナルでclaudeと入力してClaude Codeを起動し、「int配列で○○を管理し、○○を計算するJavaコードを書いて」のように具体的に依頼します。エラーが出た場合はエラーメッセージをそのまま貼り付けると原因と修正法を教えてくれます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
Claude Code を業務に落とし込む
専門研修コース一覧
受講者本人の業務を題材に、「使いこなせる」状態になるまで伴走する研修プログラム。1対1特化型・ハンズオン・法人講座の3コースを展開中。業務特化・実装まで踏み込むタイプのClaude Code研修です。
研修コース一覧を見る →AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




