ええと、あなたは実際に意味os[0]
しos[1]
、配列はJavaでは0ベースなので...しかし、そうです、それらは参照になります。両方の配列要素は同じオブジェクトを参照します。
重要なのo
は、オブジェクトでもないということです。
o
は変数です:名前と値があります
- の値
o
は参照です:nullであるか、オブジェクトを参照しています
- オブジェクトにはフィールドがあり、特定の実行時タイプなどがあります
式の値(単純な変数値、メソッド呼び出しの結果など)は、Javaでは決してありません。常に参照値またはプリミティブ値のいずれかです。object
Java言語仕様で配列を定義する方法は、変数のコレクションと同じです。
配列オブジェクトには、いくつかの変数が含まれています。変数の数はゼロである可能性があり、その場合、配列は空であると言われます。配列に含まれる変数には名前がありません。代わりに、負でない整数のインデックス値を使用する配列アクセス式によって参照されます。これらの変数は、アレイのコンポーネントと呼ばれます。配列にn個のコンポーネントがある場合、nは配列の長さです。配列のコンポーネントは、0からn-1までの整数インデックスを使用して参照されます。
つまり、実際には次のようになります。
// Creating the pseudo-array
CustomObject o0 = null;
CustomObject o1 = null;
// Populating it
o0 = o;
o1 = o;
相変わらず、代入演算子は右側の値を左側にコピーするだけです。その値は参照です。