を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. 私はそれを行うだろうか、特定の属性
- 2. は、私は次の操作を行うことができれば、私は思ったんだけど、他の
- 3. だからRubyで、私は次の操作を行うことができますPythonの
- 4. numpyの - 私は、次の操作を行うことができますので
- 5. 停止私は次の操作を行う場合はどうなりますか網膜のみの画像
- 6. のiOS:私は次の操作を実行しようとしているビルドフェーズ
- 7. 負荷テストは、私は次の操作を行い結果
- 8. Hibernateは==========================私は、次の操作
- 9. は、どのように私は次の操作を行う必要があり、コンテキストメニュー - ポップアップメニュー
- 10. ダイナミック私は私のオプションは、次の操作を行うためのものであるかわからないんだけど、テキスト
- 11. 私はCSSで次の事やろうとしているCSS
- 12. Gitのバックアウト・マスター、どのように私が行くだろう
- 13. は、私はメインスレッド/プロセスから物事を次の操作を行いたい、オープン
- 14. どのように私はインターフェイスのInfocardのインスタンスを返すだろうか?
- 15. は、私はMongoのパイプラインで次の操作を実行しようとしている
- 16. は、私は次の操作を行うための最善の方法を思っていたカスタムUIButtonクラス
- 17. は、私は次の操作を行うための方法を探しています抽象オブジェクトの
- 18. Railsの条件の検証は、私は次の操作を実行しようとしています
- 19. 私は次の操作を行うように言われてきた新しい連絡先ビュー
- 20. 私は、次のような何かを行うことができますJavaでは可変のTreeMap
- 21. あなたはのIntelliJでこれを作るだろうかIntelliJの
- 22. こんにちは、私は次の操作を実行しようとしているプロセス
- 23. のjava:私はJavaでこれを行う場合は、「foreachの」
- 24. は、私は次のことをやろうとしているのPython
- 25. Mockito:私は次の操作を行うことができますMockitoで汎用パラメータ
- 26. JavaMail replyToをcoldfusionに追加するにはどうすればよいですか?私は、次のようなものだろうにJavaMailを使用して
- 27. フレームが、私は次の操作を行うことができます発見したのjQuery
- 28. 私は次の操作を行うことができ、単一のインデックス付きデータフレーム付きマルチインデックス
- 29. は、私は次のことをやろうとしているカスタム要素
- 30. XML Unicode文字列は、次の操作を実行しようとすると
ありませんこれはJavaでは不可能です。変数の割り当てに関する規則では、変数の名前を使用して割り当てる必要があります。 – Nayuki
私はbarをnullに設定すると、aとbにもnull参照があると思っています。それとも何が問題なの? –
このチュートリアルを読んでください:http://www.javaranch.com/campfire/StoryPassBy.jsp – Nayuki