2つの違いは何ですか:
hashMap_2 = hashMap_1;
と
hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);
両者に違いはありますか?
私によると、両方とも新しいHashMap
名前のhashMap_2
hashMap_2 = hashMap_1;
は、両方の変数が同じオブジェクトを参照していることを意味します。hashMap_2
は、 によって参照されているオブジェクトを参照するようになりますhashMap_1
。hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);
により、別のハッシュマップがの値で作成されますhashMap_1
。HashMap
オブジェクトがあり、それらは同じ値を持ちます。最初の式は HashMap を初期化しません。参照を割り当てるだけです。
このステートメントhashMap_2 = hashMap_1;
は参照割り当てと呼ばれ、同じオブジェクトが 2 つの参照変数によって参照されます。
を初期化するとき、プリミティブを除いて、演算子Object
が付属しています。new
初期化プロセスはヒープ上に新しいオブジェクトを作成しますが、割り当ては新しいオブジェクトを作成しません。
1.hashMap_2 = hashMap_1;
hashMap_1 の値が hashMap_2 に割り当てられました
2.hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);
新しい HashMap オブジェクト (hashMap_2) が作成されました
両方の拡張の違いは、割り当てと初期化です