Javaの配列とArrays.fillの基本
初心者向けに一言で言うと、Arrays.fillは「配列の全部(または一部)を同じ値で一気に埋める魔法の道具」です。for文で1つずつ代入するより、短くて読みやすく、ミスも減ります。
配列の初期値ってなに?
- 数字の配列: 作った瞬間は全部0
- booleanの配列: 作った瞬間は全部false
- 文字列やオブジェクトの配列: 作った瞬間は全部null
例:
int[] nums = new int[3]; // [0, 0, 0]
boolean[] flags = new boolean[2]; // [false, false]
String[] names = new String[2]; // [null, null]
JavaArrays.fillで「全部同じ」にする
- 基本形:
Arrays.fill(配列, 値);— 配列の全要素をその値にする - 必要な準備: 先頭で
import java.util.Arrays;を書く
例:
import java.util.Arrays;
int[] scores = new int[5]; // [0, 0, 0, 0, 0]
Arrays.fill(scores, 10); // [10, 10, 10, 10, 10]
Java一部だけを埋めることもできる
- 範囲指定:
Arrays.fill(配列, start, end, 値); - 注意点: startは含む、endは含まない(0から始まる)
例:
import java.util.Arrays;
int[] a = new int[]{0, 0, 0, 0, 0}; // 初期状態
Arrays.fill(a, 1, 4, 7); // 添え字1〜3を7にする
// 結果: [0, 7, 7, 7, 0]
Javaよくある実用例
- ゲームのスコアをリセット: 全部0に
import java.util.Arrays;
int[] scores = new int[10];
Arrays.fill(scores, 0);
Java- フラグの初期化: 全部falseに
import java.util.Arrays;
boolean[] seen = new boolean[100];
Arrays.fill(seen, false);
Java- 配列の前半だけ準備: 前半を1、後半を0に
import java.util.Arrays;
int[] bits = new int[8]; // [0,0,0,0,0,0,0,0]
Arrays.fill(bits, 0, 4, 1); // 前半4つを1に
// 結果: [1,1,1,1,0,0,0,0]
Java例題で練習しよう
例題1:全要素を同じ値にする
- 課題: 長さ5のint配列を作り、全てを「42」にする。
- 解答コード:
import java.util.Arrays;
int[] nums = new int[5];
Arrays.fill(nums, 42);
// numsは [42, 42, 42, 42, 42]
Java例題2:一部だけを埋める
- 課題: 長さ6の配列のうち、添え字2〜5の手前(つまり2,3,4)を9に。
- 解答コード:
import java.util.Arrays;
int[] a = new int[6]; // [0,0,0,0,0,0]
Arrays.fill(a, 2, 5, 9); // 2,3,4番目が9
// aは [0,0,9,9,9,0]
Java例題3:初期化+部分上書き
- 課題: まず全体を-1で埋め、次に先頭3つを0にする。
- 解答コード:
import java.util.Arrays;
int[] data = new int[7];
Arrays.fill(data, -1); // [-1,-1,-1,-1,-1,-1,-1]
Arrays.fill(data, 0, 3, 0); // 先頭3つを0に
// 結果: [0,0,0,-1,-1,-1,-1]
Javaつまずきポイントとコツ
- 範囲の終端は含まない:
startは含む、endは含まない。Arrays.fill(a, 1, 4, x)は1,2,3だけ。 - インポート忘れに注意: 毎回
import java.util.Arrays;を入れる。 - 多次元配列は一気に埋められない:
int[][]などは行ごとにfillする必要がある。
import java.util.Arrays;
int[][] grid = new int[3][3];
for (int i = 0; i < grid.length; i++) {
Arrays.fill(grid[i], 5); // 各行を5で埋める
}
Javaまとめ
- 全部同じ値にしたいときはArrays.fillが最短・安全。
- 一部だけなら範囲指定版で「start含む・end含まない」を守る。
- 多次元は行ごとにfill。
次に進むなら、Arrays.fillと組み合わせてArrays.equalsやArrays.toString、Arrays.copyOfも覚えると配列操作がグッと楽になります。
