javaのオブジェクト参照変数とは何ですか?
参照変数はオブジェクトのメモリ アドレスを保持していますか?
私は混乱しています。説明してください。
javaのオブジェクト参照変数とは何ですか?
簡単に言えば、型がオブジェクト型の変数です。つまり、 のいずれかjava.lang.Object
またはサブタイプであるタイプですjava.lang.Object
。
参照変数はオブジェクトのメモリアドレスを保持していますか?
おそらくはい、しかしおそらくいいえ。
JVM がオブジェクト参照をどのように表すかによって異なります。ほとんどの JVM では、オブジェクト参照は、メモリ アドレスまたはポインタを使用してバックグラウンドで表されます。しかし、配列へのインデックスとして表すこともできます...または他の何か。(実際、オブジェクト参照が実際にはポインターの配列へのインデックスである実験的な JVM をいじりました。)
要点は、Java オブジェクト参照は、表現/実装の詳細をユーザーから隠すように設計された抽象化であるということです。純粋な Java でプログラミングするかどうかは問題ではないため、実際の表現は気にする必要はありません。純粋な Java では実際のメモリ アドレスを把握することはできません。これは良いことです。JVM (具体的にはガベージ コレクター) は、ユーザーに通知せずにオブジェクトの実際のメモリ アドレスを変更する傾向があります。アプリケーションがオブジェクトアドレスを取得して使用できる場合、それを処理する必要があり、根本的に難しい問題です。