- 更新日: 2020年10月02日
- 公開日: 2017年06月14日
【超初心者向け】Java配列の簡単な使い方
「Javaとはなにか」「Javaのインストール方法」「Javaの正規表現」についてお伝えしてきました。今回は「Javaの配列」です。配列という言葉が数学的な響きを持っているためか、配列はプログラミング初心者がつまずきがちなポイント。しかし配列はJavaに限らずプログラミング言語に使うものなので、概念だけでもしっかり覚えておきましょう。
※画像はWindows 10 のコマンドプロンプトの画面です
配列とは?
配列とは、同じ型のデータを複数格納する入れ物のことです。変数と同じように、値を代入したり参照したりします。変数には1つの値を持つのに対し、配列は複数の値を持つことができます。同じ"意味"を持つデータの集合と考えるとわかりやすいかもしれません。
例えば9教科のテストの点数を格納したい場合。 配列を使わず変数だけで表すとなると、変数を9つ定義し、それぞれに値を代入する必要が出てきます。配列の場合、1つの配列に9つの値を格納できます。
Java配列の基本的な書き方
配列の宣言
配列を使うには、まず配列を宣言します。
基本の宣言
型名 配列名[]; 配列名 = new 型名[配列の長さ];
"配列名[]"の"[]"内にはインデックス(添え字)が入ります。インデックスとは何個目かを表す数字です。
<例>
int scores[];
scores = new int[5];
宣言は int[] scores; でも int scores[]; でもどちらでも構いません。
1行にまとめて宣言
1行にまとめて書くこともできます。
型名 配列名[] = new 型名[配列の長さ];
<例>
int scores[] = new int[5];
宣言と同時に初期化
宣言と同時に値を設定するには、下記のように書きます。
型名 配列名[] = {値1, 値2... };
<例>
int scores[] = {82, 65, 47 ,100, 96};
配列のサンプルとポイント
例として、5人のテストの点数を記録する配列を作ります。
int scores[] = new int[5];
scores[0] = 82;
scores[1] = 65;
scores[2] = 47;
scores[3] = 100;
scores[4] = 96;
注意したいのは、配列の長さとインデックスの番号です。 配列の長さには要素数(個数)そのものを指定します(例でいえばint[5]の"5")。配列の長さに対し、インデックスは0から始まります(例でいえばscores[0]~scores[4])。配列の長さ5個であれば、インデックスは0から4までとなります。
<サンプルコード1>
public class ArraySample {
public static void main(String args[]) {
//判定する文字列
int scores[] = new int[5];
//配列に代入
scores[0] = 82;
scores[1] = 65;
scores[2] = 47;
scores[3] = 100;
scores[4] = 96;
//画面表示
System.out.println(scores[0]);
System.out.println(scores[1]);
System.out.println(scores[2]);
System.out.println(scores[3]);
System.out.println(scores[4]);
}
}
上記のコードでは、scoresという配列を定義し、scores[0]~[4]に数値を代入。配列の内容を画面表示しています。
<実行結果>
配列に関するエラー
インデックスは、配列の長さ(要素数)の範囲内でなければなりません。
例えば
int scores[] = new int[5];
scores[7] = 50;
のように、配列の長さを5、インデックスに7と指定します。コンパイルの時点ではエラーになりませんが、実行してみると「java.lang.ArrayIndexOutOfBoundsException」(意味:インデックスの範囲外)というエラーが発生します。
<サンプルコード2>
public class ArraySample {
public static void main(String args[]) {
//配列を定義
int scores[] = new int[5];
//配列に代入
scores[0] = 82;
scores[1] = 65;
scores[2] = 47;
scores[3] = 100;
scores[7] = 50; //←ここでエラー
//画面表示
System.out.println(scores[0]);
System.out.println(scores[1]);
System.out.println(scores[2]);
System.out.println(scores[3]);
System.out.println(scores[7]);
}
}
<結果>
インデックスを変数で指定
インデックスを変数で指定することもできます(インデックスは整数型で、long型は使用できません)。繰り返し処理と配列を組み合わせ、効率的に処理する使い方ができます。
for文を用いた場合
<サンプルコード3>
public class ArraySample {
public static void main(String args[]) {
//配列を定義
int scores[] = new int[5];
//配列に代入
scores[0] = 82;
scores[1] = 65;
scores[2] = 47;
scores[3] = 100;
scores[4] = 96;
//for文を用いた場合の画面表示
for (int i = 0; i < 5; i++){
System.out.println(scores[i]);
}
}
}
画面表示でfor文を用いた例です。インデックスに変数iを使い、scores[0]~scores[4]を表示させています。
<結果>
forEachを用いた場合
Java SE 8から追加されたStream APIを用いると、下記のように書くことができます。 結果はfor文で表示させた場合と同じです。
<サンプルコード4>
public class ArraySample {
public static void main(String[] args) {
//宣言と同時に初期化
int scores[] = {82, 65, 47 ,100, 96};
//forEachメソッドを用いた場合の画面表示
Arrays.stream(scores).forEach(s -> System.out.println(s));
}
}
<結果>
配列の長さを取得する
特にインデックスを変数で指定する場合にセットで使うことが多いのが、配列の長さを取得する構文です。
配列変数名.length
<例>
scores.length
<サンプルコード5>
lengthを用いると、サンプルコード3を以下のように書くことができます。 ここのsocores.lengthでは、5が返されています。
public class Practice1_2Class {
public static void main(String[] args) {
//宣言と同時に初期化
int scores[] = {82, 65, 47 ,100, 96};
//lengthを用いた場合(5が返される)
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
}
}
<結果>
多次元配列
多次元配列とは、複数の次元で構成される配列のことです。2次元配列であれば、表のようなものと考えるとわかりやすいのではないでしょうか。
生徒名 | 国語 | 算数 | 理科 | 社会 | 英語 |
---|---|---|---|---|---|
A | 82 | 65 | 47 | 100 | 96 |
B | 11 | 22 | 33 | 44 | 55 |
C | 66 | 77 | 88 | 99 | 0 |
この2次元配列をJavaの配列で表現すると下記のようになります。
int scores[][] = {{82, 65, 47 ,100, 96},//Aさんの得点の配列
{11, 22, 33 ,44, 55}, //Bさんの得点の配列
{66, 77, 88 ,99, 0}}; //Cさんの得点の配列
可変長の配列はArrayList クラス
java.util.ArrayListは、配列の長さ(要素数)が決まっていない配列のようなクラスです。
ArrayListクラスのオブジェクトは下記のように作成します。
ArrayList<型> 変数名 = new ArrayList<型>();
<例>
ArrayList<Integer> scores = new ArrayList<Integer>();
<サンプルコード6>
import java.util.ArrayList;
public class ArraySample {
public static void main(String args[]) {
//配列
ArrayList<Integer> scores = new ArrayList<Integer>();
//配列に代入
scores.add(82);
scores.add(65);
scores.add(47);
scores.add(100);
scores.add(96);
//画面表示
for (int i = 0; i < 5; i++){
System.out.println(scores.get(i));
}
}
}
要素を追加するにはaddメソッド、要素を取得するにはgetメソッドを使います。上記では配列に要素を追加し、結果を表示しています。
<結果>
ArrayListクラスについて詳しくはこちらをご参照ください。
\エンジニア最強言語のJavaスキルが身に付く/
まとめ
- この記事を書いた人
- りもた