1

两者有什么区别 :

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
  • 这意味着只有一个对象存在,但有两个变量引用同一个对象。
  • 该语句hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1); 导致使用 的值创建另一个哈希图hashMap_1
  • 将有两个不同的HashMap对象,它们将具有相同的值
于 2013-09-10T10:08:04.630 回答
4

第一个表达式不初始化 HashMap。它只是分配参考。

于 2013-09-10T10:08:33.433 回答
1

任务

该语句hashMap_2 = hashMap_1;称为引用赋值,其中同一个对象由两个引用变量引用。

初始化

初始化 a Objectthen 时,它带有一个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 回答
0

正如每个人所说

hashMap_2 = hashMap_1; --> 将 HashMap1 的引用分配给 hashMap_2

hashMap_2 = 新的 HashMap(hashMap_1); --> 导致创建另一个哈希图。

添加以下点

在这两种情况下,存储在 hashmap2 和 hashMap_1 中的对象都是相同的。两者都不会进行深度克隆

于 2013-09-10T10:25:45.000 回答