Java配列プログラミング
配列とは
複数の同じ型の変数がある場合、それらを一まとめにして扱うと便利なことがあります。
配列は、それを行うための機能です。
プログラミング言語には欠かせない機能なので、Java以外のプログラミング言語でもほとんどの場合、配列が使えるようになっています。
普通の変数は面倒くさい
能書きはこれぐらいにしておいて、具体的なプログラムを見てみましょう。
ここに、反日国家を表示するプログラムがあります。
(ファイル名) SingleVariable.java
public class SingleVariable { public static void main(String[] args) { String hannichiKokka0 = "韓国"; String hannichiKokka1 = "北朝鮮"; String hannichiKokka2 = "中国"; //反日国家を表示する System.out.println(hannichiKokka0); System.out.println(hannichiKokka1); System.out.println(hannichiKokka2); } }
(コンパイル & 実行結果)
$ javac SingleVariable.java $ java SingleVariable 韓国 北朝鮮 中国
しかし、このプログラムには以下のような欠点があります。
1. 反日国家の数だけ、System.out.println文を書かなくてはならない。
2. 親日国家を表示する同じようなプログラムを書こうとすると、プログラムの修正が大変になる。
配列変数の出番だよ
これらを解決するために、通常の変数ではなく配列変数を使います。
まずは、このプログラムを配列変数を使ったものに修正してみます。
(ファイル名) ArrayVariable.java
public class ArrayVariable { public static void main(String[] args) { //配列変数の宣言 String[] hannichiKokka; //配列の生成 hannichiKokka = new String[3]; //配列に代入 hannichiKokka[0] = "韓国"; hannichiKokka[1] = "北朝鮮"; hannichiKokka[2] = "中国"; //反日国家を表示する System.out.println(hannichiKokka[0]); System.out.println(hannichiKokka[1]); System.out.println(hannichiKokka[2]); } }
実行結果は最初のプログラムと同じなので省略します。
それでは、プログラムの内容を追って行きましょう。
1. 配列の宣言
変数の型[] 変数名;
と書きます。
String[] hannichiKokka;
と書けば、変数hannichiKokkaが配列変数であることを表します。
2. 配列の確保
配列変数 = new 変数の型[サイズ];
と書きます。
配列変数を宣言しただけでは、どれぐらいの大きさの配列を使うのかが分からないので、この記述によって配列の大きさを確保します。
hannichiKokka = new String[3];
と書けば、String型(文字列型)3個分の領域を確保します。
3. 配列変数に値を代入
配列を確保しただけでは、中身は空の状態です。
そこで、配列を利用するために、配列のそれぞれの箱に値を代入します。
それには、
配列変数[添字] = 値;
と書きます。
添字は、0から(配列のサイズ-1)までの値を取ります。
たとえば、今回のプログラムでは、配列hannichiKokkaの大きさは3なので、添字は0から2までとなります。
添字の最大値は、配列の大きさより1だけ小さくなることに注意して下さい。
4. 配列変数の値の取得
配列変数から値を取得するときも、添字を使います。
配列変数[添字]
で値を取得できます。
今回のプログラムでは、配列hannichiKokkkaに添字0から2までを指定して、中身を表示しています。
System.out.println(hannichiKokka[0]); //「韓国」を表示する。
System.out.println(hannichiKokka[1]); //「北朝鮮」を表示する。
System.out.println(hannichiKokka[2]); //「中国」を表示する。
配列の便利な使い方
ところで、配列を使ったプログラムは、そうでないものよりも長くなってしまいました。:-(
これでは、配列を使用する利点がないばかりか、かえって面倒くさくなってしまったように思えます。
実は、配列変数を便利に使うためには、添字に整数型変数を使います。
プログラムを修正し、forループの中で添字を変化させてみます。
(ファイル名) ArrayVariable.java
public class ArrayVariable { public static void main(String[] args) { //配列変数の宣言 String[] hannichiKokka; //配列の生成 hannichiKokka = new String[3]; //配列に代入 hannichiKokka[0] = "韓国"; hannichiKokka[1] = "北朝鮮"; hannichiKokka[2] = "中国"; //反日国家を表示する for(int i=0; i<hannichiKokka.length; i++) { System.out.println(hannichiKokka[i]); } } }
太字が変更部分です。
このように記述すると、変数iが0から1ずつ増えていきます。
すなわち、配列変数hannichiKokkaの添字が0,1,2と変化していくので、ループを回る度に次の要素を表示します。
このプログラムでは、変数iの上限範囲をhannichiKokka.lengthで取得しています。
lengthは配列のプロパティで、
配列変数.length
と書けば、配列の大きさを取得することができます。
配列の宣言と初期化を一気に書く
通常、配列の宣言と領域の確保はセットで行うことが多いので、これを一行で書く方法が用意されています。
変数の型[] 変数名 = new 変数型[サイズ]
と書けば、配列の宣言と領域確保を一度に行えます。
また、
変数の型[] 変数名 = {要素0, 要素1, 要素2, …, 要素n};
と書けば、配列の宣言、生成、初期化をいっぺんに行うことができます。
この書き方を用いて、親日国を表示するプログラムを書くと次の様になります。
(ファイル名) LovingJapan.java
public class LovingJapan { public static void main(String[] args) { //配列変数の宣言と生成を一気に行う String[] shinnichiKokka = { "トルコ", "パラオ", "台湾", "ミャンマー", "タイ"}; //親日国を表示する for(int i=0; i<shinnichiKokka.length; i++) { System.out.println(shinnichiKokka[i]); } } }
(コンパイル & 実行結果)
$ javac LovingJapan.java $ java LovingJapan トルコ パラオ 台湾 ミャンマー タイ
(関連記事)
簡単なJavaプログラムを書く
Comments are currently closed.