这两种初始化HashMap的方法有什么区别?

时间:2013-09-10 10:06:18

标签: java hashmap

两者之间有什么区别:

hashMap_2 = hashMap_1;

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

两者之间有什么区别吗?

根据我的要求,我们都会初始化一个名为HashMap的新hashMap_2

5 个答案:

答案 0 :(得分:13)

  • 声明hashMap_2 = hashMap_1;表示两个变量 引用相同的对象
  • 变量hashMap_2现在将引用hashMap_1引用的对象。
  • 这意味着只有一个对象,但两个变量引用同一个对象。
  • 语句hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1); 会导致另一个哈希映射 已创建,其值为hashMap_1
  • 将有两个不同的HashMap个对象,它们将具有相同的值

答案 1 :(得分:4)

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

答案 2 :(得分:1)

ASSIGNMENT

此声明hashMap_2 = hashMap_1;称为 引用分配 ,其中同一个对象由两个引用变量引用。

INITIALIZING

初始化Object时,它会附带new运算符,但基元除外。初始化过程在堆上创建一个新对象,而赋值不会创建新对象。

答案 3 :(得分:1)

1.hashMap_2 = hashMap_1;

hashMap_1值已分配给hashMap_2

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

创建了新的HashMap对象(hashMap_2)

两种表现的差异是作业和初始化

答案 4 :(得分:0)

正如每个人所说的那样

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

hashMap_2 = new HashMap(hashMap_1); - &gt;导致创建另一个hashmap。

添加以下点

在这两种情况下,存储在hashmap2和hashMap_1中的Object都是相同的。两者都不会做深刻的克隆