をnullにオブジェクトのすべての参照を設定します。バーにアクセスできますか?もしそうなら、誰かがそうする方法を説明してください。は、私は次の操作を行うだろうか、Javaでは
答えて
これはJavaでは不可能です。参照番号a
とb
は、bar
を使用してnullに設定することはできません。
理由 - Javaはpass by value
ではなく、pass by reference
です。
私はこれが正しい理由だとは思わない。 「値/参照渡し」は、メソッド呼び出しの評価戦略です。ここでメソッドは呼び出されません。 – xehpuk
いいえ、Javaではできません。
私はあなたのコードで何が起こったのか少し説明します。 ここではFoo bar = new Foo();
というオブジェクトを作成し、変数bar
への参照を入れました。
ここでFoo a = bar;
とFoo b = bar;
は、変数a
とb
への参照を入れます。だからあなたは今、1つのオブジェクトと3つの変数を指しています。
bar = null;
bar
変数をクリアします。したがって、オブジェクトを指す2つの変数(a
とb
)と参照なしの変数(bar
)があります。
CでありのようなJavaでデストラクタが本当にありません。
あなたがnullに複数のオブジェクトを設定したいことを知っていたなら、あなたはおそらく使用しますFooの配列を別のオブジェクトとして宣言するのではなく、その後、コンストラクタコール、instatiation/initializationにループを使用します。
Foo bar = new Foo();
Foo array[2]
for (int i=0; i<array.length; i++) {
array[i] = bar;
}
次にあなたが再帰のために、これはあなたが任意の数のオブジェクトを処理することができますので、あなたがデータ構造にしたいと思う戦略で終わり
for (int i=0; i<array.length; i++) {
array[i] = null;
}
をループを使用することができますなど
ところで、a = barと言うと、barの値をaにコピーしています。バーを変更しても、他のメモリ位置のコピーされた値は変更されません。私は、数学の人々は時々、CとJavaではdouble ==が双対対称であるという事実の後、等号が真であると仮定していることを知っています。単一の=は割り当てと呼ばれ、左の非対称矢印のように考えることができます。 Javaでは、オブジェクトをnullに設定すると、デストラクタを呼び出すC相当のオブジェクトになります。 –
Re: "ヌルへの参照ではなく、barの値をnullに設定したい" ASCII値0は、文字通り文字列またはオブジェクトの末尾にあるnullを表します(ヌル終端文字列)。したがって、メモリ内の値がnullに変更された場合、クラス内で定義されているように、必要なメンバ関数、メンバ変数などを持たないため、Fooオブジェクトにはなりません。 –
- 1. 私は次の操作を行うためにtrtingだループ
- 2. NSPredicateは、私は次の操作を実行しようと
- 3. 私はそれを行うだろうか、特定の属性
- 4. は、私は次の操作を行うことができれば、私は思ったんだけど、他の
- 5. パイソン/パンダ/ PyMySQL - 私は、次の操作をやろうとしている
- 6. 私は、次の操作を行うとしていた
- 7. 私は次の操作を行う必要があり
- 8. 私はこの次のコードはこのように動作するだろうと思った次の
- 9. は、だから私は、次の操作を実行する必要がループ
- 10. Reyield私はこれを行うだろうジェネレータ
- 11. だからRubyで、私は次の操作を行うことができますPythonの
- 12. numpyの - 私は、次の操作を行うことができますので
- 13. Gitの私は、次の操作を行うことができ、ユーザ名
- 14. 停止私は次の操作を行う場合はどうなりますか網膜のみの画像
- 15. のiOS:私は次の操作を実行しようとしているビルドフェーズ
- 16. 負荷テストは、私は次の操作を行い結果
- 17. Hibernateは==========================私は、次の操作
- 18. 私は次の操作を実行しようとしている変数
- 19. 私は次の操作を実行しようとしていマッパー
- 20. エラー私は、次の操作を実行しようとしているブロック
- 21. は、モーダルは、私は私のモデルが開いたときにそれを行うだろうどのページ
- 22. Matlabでスライディングウィンドウ操作を行うには?
- 23. は、どのように私は次の操作を行う必要があり、コンテキストメニュー - ポップアップメニュー
- 24. どのように私は、デバッグを実行し、コンフィギュレーションは、私は次の操作を行うことができ、以前の.NETのコアで
- 25. ダイナミック私は私のオプションは、次の操作を行うためのものであるかわからないんだけど、テキスト
- 26. どのように私はそれがラムダを使用しないでください、私はパンダで次の操作を実行したい場合はパンダ
- 27. 私はCSSで次の事やろうとしているCSS
- 28. どのように私はインターフェイスのInfocardのインスタンスを返すだろうか?
- 29. Gitのバックアウト・マスター、どのように私が行くだろう
- 30. は、私はメインスレッド/プロセスから物事を次の操作を行いたい、オープン
ありませんこれはJavaでは不可能です。変数の割り当てに関する規則では、変数の名前を使用して割り当てる必要があります。 – Nayuki
私はbarをnullに設定すると、aとbにもnull参照があると思っています。それとも何が問題なの? –
このチュートリアルを読んでください:http://www.javaranch.com/campfire/StoryPassBy.jsp – Nayuki