0

Java でのオブジェクト参照は、私を本当に混乱させます。リンクリストの勉強を始めたとき、私はこのテーマについてほとんど知らないことに気づきました。私の質問は

Node node = list; 

リストがリンクリストの最初のノードであるとしましょう。この操作は、ノードがリストが参照するのと同じオブジェクトを参照することを意味することを知っています。つまり、ノードに変更を加えた場合、結果としてそれが参照するオブジェクトに変更を加えると、リストもこれらの変更の影響を受けます。ただし、 node.next と list.next も同じオブジェクトを参照していることを理解していません。つまり、リンクリストを次のように書いた場合

Node node = list;
node = node.next;

それは、list.next でリストも変更しているということですか? または、(node.next.name = "B") と書いた場合、list.next 要素の名前も変更しますか? 質問がばかげているように見えることは知っていますが、参照については本当に何も知りません。また、私はその主題について多くのことを研究しました。しかし、これまでオンラインで見つけたものは、あまり役に立ちませんでした。誰かが私に明確でわかりやすい方法で説明してくれれば、とてもありがたいです。

4

3 に答える 3

3

参照とは、メモリ内で、メモリ内のデータに対して同じ「参照」を持っていることを意味します。

したがって、nodelistは同じオブジェクトと同じくらい単純です。

データがメモリ(RAM)に保存されていると考える場合。記憶を引き出しだらけのクローゼットと考えてください。

のデータがnode引き出し番号 2 にある場合。「参照」とは、引き出し番号 2 も参照することをnode = list意味しlistます。

nodeデータを変更すると、引き出し番号 2 の値が変更されます。list

于 2013-05-07T01:30:49.037 に答える
0

あなたは尋ねました:

それは、list.next でリストも変更しているということですか?

いいえ、オブジェクト変数 (オブジェクト参照)nodeをリスト内の別のノードを指すように再割り当てしているだけです。

(node.next.name = "B") と書いた場合、list.next 要素の名前も変更しますか?

nodeが割り当てられた場合list、あなたが書いたステートメントは真です。動作の後node = node.next;、別のノードが変更されます。

リスト内の NODE または NODES のサブセットは、それ自体がリストと見なすことができることに注意してください。

それが役立つことを願っています。

于 2013-05-07T01:31:01.447 に答える