配列の話

2010年04月10日 12時50分 Java



※対象バージョン:Java1.4

配列に関するちょっとした話を説明します。ここに実際に仕事をしていて役立つことはありません、配列は使えるだけで問題は無いのです。

int x[] = new int[5]; // int型の配列の領域を確保
x[0] = 1; // 1番目の要素に1を代入

 
上に紹介したのは Java における一般的な配列の宣言方法です。先にも書いたとおり通常であればこの宣言の形だけ知っていれば問題はありません。しかし Java の試験 (SJC-P) を目指すのであれば以下のようにいろいろな宣言方法を知っておく必要があります。

int x1 [];
int[] x2;
int [] x3;
int x4 [][];
int [] [] x5;
int x6[][] = new int[2][3];
int x7[][] = new int[2][];
int x8[][] = new int[]{1, 2};
int x9[] = {1, 2, 3};
int x10[][] = {{1, 2, 3}, {4, 5, 6}};
int x11[] = {1, 2, 3, };

 
x11 のように最後に「,」(カンマ)が来た場合、最後の「,」は無視され、3 の要素を持つ配列として宣言されます。

では、果たして配列はオブジェクトなのでしょうか?オブジェクト(インスタンス)の生成には new 演算子を利用しますよということは様々な Java の参考書に書かれております。

では instanceof 演算子で確認してみましょう。instanceof は対象のオブジェクトが指定したクラスを継承、またはインタフェースを実装したオブジェクトである場合、戻り値として true を返す演算子です。つまり配列がオブジェクトであった場合、instanceof 演算子で true を返した場合、これが実証されることになります。

if (new int[5] instanceof Object ) { // Object を継承したオブジェクトであれば trueを返す
    return true;
}
return false;

 
このプログラムを実行すると、true を取得します。オブジェクトだと明確に断言はできませんが、配列は Object との instanceof で true を返すということだけはわかりました。ただ、このことを知ったからといって得することは何もありません。他のクラスオブジェクトと同様に参照渡しができるということくらいは誰でも知ってますよね?



Leave a Reply

preload preload preload