では、Java初心者向け「配列操作 総まとめ教材」 を作ります。
対象は これから配列を学ぶ人 で、1次元・2次元・多次元・ArrayList・表示方法・よくある間違い を全部まとめた教材です。
例題・図解・注意点・練習問題付きで作ります。
1. 配列とは
- 複数の同じ型のデータをまとめて扱える変数。
- インデックス で個別の値にアクセス。
- Javaでは固定長。
int[] numbers = {10, 20, 30};
System.out.println(numbers[0]); // 10
Java⚠ 注意
- 配列のインデックスは 0から始まる
- 範囲外アクセス →
ArrayIndexOutOfBoundsException
2. 配列の初期化
int[] a = new int[3]; // 要素は 0 で初期化
int[] b = {1,2,3}; // 宣言と同時に値を設定
int[] c;
c = new int[]{4,5,6}; // 後で代入
Java3. 配列の操作
(1) 値の代入
int[] a = new int[3];
a[0] = 10;
a[1] = 20;
Java(2) 配列の長さ
System.out.println(a.length); // 3
Java(3) 配列の合計
int sum = 0;
for(int i=0;i<a.length;i++){
sum += a[i];
}
Java4. 配列の表示
(1) 1次元配列
int[] arr = {1,2,3};
System.out.println(Arrays.toString(arr)); // [1, 2, 3]
Java(2) 2次元・多次元配列
int[][] matrix = {{1,2},{3,4}};
System.out.println(Arrays.deepToString(matrix)); // [[1, 2], [3, 4]]
Java⚠ 間違いやすいポイント
System.out.println(matrix);→ 参照アドレスが表示されるArrays.toString(matrix)→ 子配列はアドレス表示される
5. 2次元配列・ジャグ配列
(1) 2次元配列
int[][] grid = new int[2][3]; // 2行3列
grid[0][0] = 1;
Java(2) ジャグ配列(行ごとに長さが異なる)
int[][] jagged = new int[2][];
jagged[0] = new int[1];
jagged[1] = new int[3];
Java6. ArrayListとの組み合わせ
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2,3});
System.out.println(Arrays.toString(list.get(0))); // [1,2,3]
Java⚠ 注意
- ArrayListはサイズ可変
- ArrayList内の配列も参照扱い → shallow copy に注意
7. 配列コピー
(1) System.arraycopy
int[] src = {1,2,3};
int[] dest = new int[3];
System.arraycopy(src,0,dest,0,src.length);
Java(2) Arrays.copyOf
int[] copy = Arrays.copyOf(src, src.length);
Java8. よくあるバグ
| 状況 | 原因 | 修正方法 |
|---|---|---|
| 配列を直接 println | アドレス表示 | Arrays.toString / deepToString |
| 配列範囲外アクセス | インデックスミス | a.length – 1以内でアクセス |
| null 配列 | NullPointerException | 配列を new してから操作 |
| 多次元配列 + toString | 子配列がアドレス表示 | Arrays.deepToString |
9. 練習問題(初心者向け)
int[] nums = {1,2,3};の 2 番目の値を表示せよ- 2次元配列
int[][] a = {{1,2},{3,4}};の合計を求めよ - 配列
[1,2,3,4,5]を逆順に表示せよ - ArrayList 内の
int[]を for 文ですべて表示せよ - ジャグ配列
int[2][]に値を設定して表示せよ
10. 練習問題解答例(抜粋)
// 1
System.out.println(nums[1]);
// 2
int sum=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
sum += a[i][j];
}
}
System.out.println(sum);
// 3
int[] arr = {1,2,3,4,5};
for(int i=arr.length-1;i>=0;i--){
System.out.print(arr[i]+" ");
}
// 4
ArrayList<int[]> list = new ArrayList<>();
list.add(new int[]{1,2});
for(int[] e:list){
System.out.println(Arrays.toString(e));
}
// 5
int[][] jagged = new int[2][];
jagged[0] = new int[]{1};
jagged[1] = new int[]{2,3};
System.out.println(Arrays.deepToString(jagged));
Java11. まとめ
- 配列操作は インデックス管理と型 が基本
- 多次元配列や ArrayList と組み合わせると 間違いやすい
Arrays.toString/Arrays.deepToStringで表示- 練習問題で手を動かすことが上達のコツ

