目次
宣言と同時に配列を初期化
次のように記述することで、宣言と同時に配列を初期化できます。
サンプルコード
static void arraySample() {
String[] s = {"りんご", "みかん", "ばなな"};
}
System.out.println(s[1]);
出力結果:
みかん
配列の要素数を取得する – length
配列にいくつ要素が入っているかを取得したい場合は length を使います。length はメソッドではなく、フィールドである点に若干の注意が必要です。
サンプルコード
static void lengthSample() {
String[] s1 = {"りんご", "みかん", "ぶどう"};
String[] s2 = {};
System.out.println(s1.length);
System.out.println(s2.length);
}
出力結果:
3 0
配列をコピーする – clone
ある配列と同じ配列を作りたい場合は、clone が便利です。
サンプルコード
static void cloneSample() {
String[] s1 = {"りんご", "みかん", "ぶどう"};
String[] s2 = s1.clone();
System.out.println(s1[0] + ' ' + s1[1] + ' ' + s1[2]);
System.out.println(s2[0] + ' ' + s2[1] + ' ' + s2[2]);
}
出力結果:
りんご みかん ぶどう りんご みかん ぶどう
配列をコピーする – System.arraycopy
Java の配列は、初期化時のサイズで固定されてしまいます。一度作った配列のサイズを大きくしたい場合は System.arraycopy を使う必要があります。
arraycopy は clone と同じく配列をコピーする際に使用しますが、clone よりも細かな設定ができます。
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src...コピー元の配列 srcPos...コピー元配列(src)のコピーする開始位置 dest...コピー先の配列 destPos...コピー先配列(dest)のコピーする開始位置 length...コピーする要素の数
サンプルコード
static void arraycopySample() {
String[] s1 = {"りんご", "みかん", "ぶどう"};
String[] s2 = new String[5];
System.arraycopy(s1, 0, s2, 0, 3);
s2[3] = "ばなな";
s2[4] = "さくらんぼ";
System.out.println(s1[0] + " " + s1[1] + " " + s1[2]);
System.out.println(s2[0] + " " + s2[1] + " " + s2[2] + " " + s2[3] + " " + s2[4]);
}
出力結果:
りんご みかん ぶどう りんご みかん ぶどう ばなな さくらんぼ
配列の結合をする場合も arraycopy を使うと便利です。
サンプルコード
static void joinArraySample() {
String[] s1 = {"りんご", "みかん", "ぶどう"};
String[] s2 = {"ばなな", "さくらんぼ", "もも"};
int rLen = s1.length + s2.length;
String[] rStr = new String[rLen]; //s1とs2両方の長さ分の配列を初期化
System.arraycopy(s1, 0, rStr, 0, s1.length);
System.arraycopy(s2, 0, rStr, s1.length, s2.length); //コピー先配列の開始位置の設定がポイント
System.out.println(rStr[0] + " " + rStr[1] + " " + rStr[2] + " " + rStr[3] + " " + rStr[4] + " " + rStr[5]);
}
出力結果:
りんご みかん ぶどう ばなな さくらんぼ もも
多次元配列を作る
配列の中に配列を作成することで、多次元配列を作成できます。表データを格納する場合などに役立ちます。
サンプルコード
static void twoDArraySample() {
int[] a1 = {38, 84, 98};
int[] a2 = {32, 11, 56};
int[] a3 = {82, 77, 8};
int[][] twoDArray = {a1, a2, a3};
for (int[] a : twoDArray) {
for (int score : a) {
System.out.print(score + " ");
}
System.out.println("");
}
}
出力結果:
38 84 98 32 11 56 82 77 8
