两者之间有什么区别:
hashMap_2 = hashMap_1;
和
hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);
两者之间有什么区别吗?
根据我的要求,我们都会初始化一个名为HashMap
的新hashMap_2
答案 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)
此声明hashMap_2 = hashMap_1;
称为 引用分配 ,其中同一个对象由两个引用变量引用。
初始化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都是相同的。两者都不会做深刻的克隆