WisdomSoft - for your serial experiences.

7.4 配列のメンバ

配列オブジェクトは final で修飾された読み取り専用の length フィールドを持ち、自身の要素数を提供します。

7.4.1 配列の長さを得る

メソッドがパラメータとして受け取る配列など、配列の構成要素数やその値がその時点で予期することができない配列を制御しなければならない場合、その配列のサイズを知る必要があります。そうでなければ、配列の長さを超えてアクセスしてしまう可能性があるためです。存在しない要素番号にアクセスした場合は、実行時例外となってプログラムが停止してしまいます。

実は、Java では配列も参照型として扱われており、暗黙的に Object クラスを継承した型として制御されています。そのため、Object クラスで定義されているメンバを継承しているほか、配列の構成要素の数を格納する length フィールドを公開しています。このフィールドは final として定義されているため、読み取り専用です。

例えば、main() メソッドが受け取る引数 args は、プログラム起動時に渡された引数が格納されるため、配列の要素数は実行時に決定されます。これを正しく処理するには、length フィールドを用いて配列の要素数を取得する必要があります。

コード1
class Test {
	public static void main(String args[]) {
		System.out.println("args.length = " + args.length);
		for(int i = 0 ; i < args.length ; i++) {
			System.out.println("args[" + i + "] = " + args[i]);
		}
	}
}
実行結果
>java Test Blue Blue Glass Moon
args.length = 4
args[0] = Blue
args[1] = Blue
args[2] = Glass
args[3] = Moon

コード1は、length フィールドから配列のサイズを取得し、要素の数だけ繰り返し処理することによってすべての要素を表示します。

因みに、配列型は Object クラスを継承する参照型なので、Object 型にワイドニング変換することができます。配列のインスタンスを抽象化することにはあまり意味がありませんが、覚えておくと良いでしょう。

int iArray[] = { 1 , 10 , 100 , 1000};
Object obj = iArray;

このように、配列を Object 型の変数に代入することができます。