予期しない出力が得られます。パスは、私は非常に小さなプログラムを持っている
one two tree
one two tree four five
one two tree four five
なぜこれが起こっているのか分かりません。私はLinkedListインスタンスのリファレンスを渡していますか?誰かがなぜ私の予想される結果を得ていないのかを明確にしてもらえますか?
予期しない出力が得られます。パスは、私は非常に小さなプログラムを持っている
one two tree
one two tree four five
one two tree four five
なぜこれが起こっているのか分かりません。私はLinkedListインスタンスのリファレンスを渡していますか?誰かがなぜ私の予想される結果を得ていないのかを明確にしてもらえますか?
すべての型はJavaで値渡しされます。しかし、あなたが渡しているのはオブジェクトではなく、オブジェクトへの参照です。つまり、参照を渡すとキュー全体のコピーが作成されず、参照のコピーが作成されるだけです。新しく作成された参照は同じオブジェクトに属しているため、queue.add()
を実行すると、要素が実際のオブジェクトに追加されます。一方、関数queue = new LinkedLIst<String>()
の参照を再割り当てしても、呼び出し関数の参照には影響しませんでした。
オブジェクトはJavaで参照渡しされます。プリミティブ型だけが値渡しされます。
キューのコピーを渡すわけではありません。キューを渡しています。変更が加えられたとき、変更はカスタマイズ呼び出しに限定されず、すべてに影響します。