[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: ポインターと参照
>Object o1;
Object o1; // この段階ではまだ全く初期化されていない
o1 = null; // 空のオブジェクトを参照している(つまり何も指していない)
o1 = new Object(); // あるオブジェクトを参照している(やっと実体を保持するようになった)
>Object o[] = new Object[1];
これですが、実は
Object[] o = new Object[1]; // Object型の要素数1の配列として初期化された。
こうです。o[] でないところがミソです。
「Java言語規定 10. 配列」
http://www.y-adagio.com/public/standards/tr_javalang/10.doc.htm
ここに、
>配列の構成要素はすべて,配列の 構成要素型(component type)と呼ぶ同じ型をもつ。
>配列の構成要素型が T ならば,その配列自体の型をT[] とする。
と書いてあります。 int の配列なら int[] 型です。さらに、
>Javaの 配列(arrays) は,オブジェクト(4.3.1)とし,動的に生成され,
>型 Object(4.3.2)の変数として代入可能とする。
>すべてのクラス Object のメソッドは,配列に対して呼出し可能とする。
ということで、すべての配列の基底クラスは Object です。
つまり int[] intarray = int[10]; Object o = intarray; という代入が可能です。
# 変な言語^^;
>o1(単一オブジェクト) と o(要素数1の配列オブジェクト) との
>違いを明確にするにはどう説明しましょう?(^^;
Object o1; o1 = new Object();
Object[] o = new Object[1]; o[0] = new Object();
(なんだかあまり違うような気がしない。^^;俺だけ?)
># VM内でのメモリ確保の仕方とか
これはよくわからないっす。
># 単純に代入方法が違うだけとか
添え字でアクセスしない/する の違い?(良く分からない)
># 実は oはポインタもどきであるとか
o がポインター変数だとしたら Object[] へのポインターを格納するポインター変数かな^^;
でもそれなら o1 も Object へのポインターを格納するポインター変数ですね。
「Java言語規定
0. 標準情報としての導入
0.3 定義」
http://www.y-adagio.com/public/standards/tr_javalang/index.htm
ここに、
>参照(reference)
> 値が番地であるデータ要素。
こんなことが書いてあった。
# ますます私には良く分からなくなってきました。^^;
# 単純にアドレスが格納してあると思えば良いのでしょうか? Cみたいにアドレス演算できないにせよ。
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル FAX 03-5362-9008