1

2つの違いは何ですか:

hashMap_2 = hashMap_1;

hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);

両者に違いはありますか?

私によると、両方とも新しいHashMap名前のhashMap_2

4

5 に答える 5

13
  • このステートメントhashMap_2 = hashMap_1;は、両方の変数が同じオブジェクトを参照していることを意味します。
  • 変数hashMap_2は、 によって参照されているオブジェクトを参照するようになりますhashMap_1
  • これは、オブジェクトは 1 つしか存在しないが、2 つの変数が同じオブジェクトを参照していることを意味します。
  • このステートメントhashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1); により、別のハッシュマップがの値で作成されますhashMap_1
  • 2 つの異なるHashMapオブジェクトがあり、それらは同じ値を持ちます。
于 2013-09-10T10:08:04.630 に答える
4

最初の式は HashMap を初期化しません。参照を割り当てるだけです。

于 2013-09-10T10:08:33.433 に答える
1

割り当て

このステートメントhashMap_2 = hashMap_1;参照割り当てと呼ばれ、同じオブジェクトが 2 つの参照変数によって参照されます。

初期化中

を初期化するとき、プリミティブを除いて、演算子Objectが付属しています。new初期化プロセスはヒープ上に新しいオブジェクトを作成しますが、割り当ては新しいオブジェクトを作成しません。

于 2013-09-10T10:14:18.417 に答える
1
1.hashMap_2 = hashMap_1;

hashMap_1 の値が hashMap_2 に割り当てられました

2.hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);

新しい HashMap オブジェクト (hashMap_2) が作成されました

両方の拡張の違いは、割り当てと初期化です

于 2013-09-10T10:15:58.117 に答える