私は現在接続されているソケットを持っています。参照または値による変数? Java
Socket s; //Connected socket
私が使用している場合:
Socket d = s;
はd
が同じ、接続されたソケットもソケットのでしょうか?これは、javaが値または参照によって割り当てられているかどうかによって異なります。この場合は、参照によって割り当てたいと思います。私はそれが正確に何をしようとしているのか分からないので、私はここで尋ねている。
私は現在接続されているソケットを持っています。参照または値による変数? Java
Socket s; //Connected socket
私が使用している場合:
Socket d = s;
はd
が同じ、接続されたソケットもソケットのでしょうか?これは、javaが値または参照によって割り当てられているかどうかによって異なります。この場合は、参照によって割り当てたいと思います。私はそれが正確に何をしようとしているのか分からないので、私はここで尋ねている。
ソケット
d
は同じで接続されたソケットですか?
は、Java値または参照により代入されている場合はい
は異なりJavaはある
完全パスごと/割り当てるバイ値。ここで割り当てられる値は、オブジェクトへの参照です。オブジェクトが入っているメモリのどのスロットを教えてくれることint
として考えて
int
アナロジーを続けて:。
int a;
int b;
a = 5;
b = a;
a = 6;
b
の値は何ですか? 5
もちろん、6
からa
への後の割り当ては、b
に格納された値とは関係ありません。
そしてそう同様に:s
の値が
Socket d;
Socket s;
d = /* ... create and connect a socket... */;
s = d;
d = null;
何ですか?右!接続されたソケットオブジェクトへの参照です。 s
(ソケットへの参照)の値は、別の値をd
に割り当てることによって完全に影響を受けません。 d
とs
は当然、同じオブジェクトを(参照)、変更をオブジェクトの任意の時間を指しているとき
さて、もちろん、あなたがd
またはs
経由の変化を見ることができます。すべてd
とs
は、オブジェクトがどこにあるかを教えてくれるので、にはオブジェクトが含まれていません。オブジェクトを含むメモリを指します。
あなたは、そのオブジェクトに参照を把握したらちょうどint
のようなプリミティブであり、まったく同じ振る舞いを持つ、Javaコードを理解することはたくさん容易になります。
ソケットdは同じで接続されたソケットですか?はい
Java
内のオブジェクトは、「ヒープ」と呼ばれるメモリ内の特別な領域に作成されます。 したがってs
とd
は、ヒープ領域に を作成したSocketオブジェクトのポインタ(または参照)のみです。
私はあなたのテキストの明確な簡潔さのために既にそれを早めにアップしていました。 ;-) –
あなたはソケットD
を初期化するときに、オブジェクトを指し示すしようとしている参照ポインタdを作成しています。
ソケットs = socketobject()の場合、sはソケットオブジェクトを指す参照ポインターでもあります。
d = sを指定すると、dの参照ポインタは、ソケットオブジェクトを指すsの参照ポインタと同じであることを意味します。
だからあなたの答えはYES
Java
参照がC++
参照異なっている必要があります。 C++
では、一度参照が作成されると、後で他のオブジェクトを参照することはできません。再設置することはできません。 Java
にすることができます。
だから、後:
Socket d = s;
あなたは、D(または複数)を作ることができるいくつかの他のSocket
オブジェクトを指し、それでもS(またはd)まだ元Socket
を指します。
他の回答も大きかった。皆さんの助けをありがとう:) – David