Javaの基本文法である配列について説明します。
Java 文法 基本データ型にてJavaで扱える基本データ型を説明しました。
int型ならば 「int a = 0」 などと記述するのですが、int型の変数が10個必要であればどうすればよいでしょうか?
愚直に対応するのであれば、下記のように記述することも出来ます。
int a1 = 0; int a2 = 0; int a3 = 0; int a4 = 0; int a5 = 0; int a6 = 0; int a7 = 0; int a8 = 0; int a9 = 0; int a10 = 0;
ですが、上記方法は以下の問題点があります。
- 記述が煩雑である
- 必要な変数数が動的なケースに対応できない
そこで、プログラムの世界ではこのような場合に配列を使います。
配列の宣言
Javaの配列の宣言は以下の文法となります。
配列は基本データ型に限らずクラスも宣言することができます。
//配列の宣言 配列型[ ] 配列名; //配列の生成 配列名 = new 配列型[サイズ]; //宣言と生成を同時に行うことも可能 配列型[ ] 配列名 = new 配列型[サイズ];
注意事項として、一度サイズを指定して生成された配列の数を変更することは出来ません。
より実践的な配列と同等の機能はコレクションフレームワークにて説明します。
配列の宣言例
int[] a = new int[10]; double[] d = new double[20]; String[] s = new String[30];
配列へのアクセス
宣言し、生成した配列の個別変数に対してのアクセス方法を説明します。
たとえば、下記のようにint型の配列を宣言したとします。
int[] a = new int[10];
イメージ的には以下の図のように配列が確保されます。
※注意事項としては[]内の数字(添字又はインデックスと言います)が0から始まります。
int[] a = new int[10]; //個別変数へのアクセス(値の代入) a[0] = 10; a[1] = 20; a[2] = 30; a[3] = 40; a[4] = 50; a[5] = 60; a[6] = 70; a[7] = 80; a[8] = 90; a[9] = 100; //個別変数へのアクセス(値の取得) System.out.println("a[0]の値は" + a[0]); System.out.println("a[1]の値は" + a[1]); System.out.println("a[2]の値は" + a[2]); System.out.println("a[3]の値は" + a[3]); System.out.println("a[4]の値は" + a[4]); System.out.println("a[5]の値は" + a[5]); System.out.println("a[6]の値は" + a[6]); System.out.println("a[7]の値は" + a[7]); System.out.println("a[8]の値は" + a[8]); System.out.println("a[9]の値は" + a[9]);
このようにインデックスを使ってアクセスすことができます。
より実践的な方法としてはfor文やwhile文を利用してアクセスします。
int[] a = new int[10]; for (int i = 0; i < a.length - 1; i++) { a[i] = i * 10; System.out.println("a[" + i + "]"の値は + a[i]); }
※配列のlength(上図のa.length)は配列の要素数を返します。
要素は10と宣言されていますので「10」を返すのですが、インデックスは0~9まででアクセスする必要があるため-1とします。
配列の初期化
基本データ型やString、任意のクラスは宣言時に初期化することが出来ました。
配列も同様に宣言、生成時に初期化できるのでその方法を説明します。
配列型[ ] 配列名 = {データ,データ,・・・};
配列の初期化例
//宣言と初期化 int[10] a = {1,2,3,4,5,6,7,8,9,10}; String[5] s = {"one","two","three","four","five"}; //配列へのアクセス for (int i = 0; i < a.length - 1; i++) { System.out.println("a[" + i + "]"の値は + a[i]); } for (int i = 0; i < s.length - 1; i++) { System.out.println("s[" + i + "]"の値は + s[i]); }