两者有什么区别 :
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;
称为引用赋值,其中同一个对象由两个引用变量引用。
初始化 a Object
then 时,它带有一个new
运算符,除了原语。初始化过程在堆上创建一个新对象,而赋值不会创建一个新对象。
1.hashMap_2 = hashMap_1;
hashMap_1 值已分配给 hashMap_2
2.hashMap_2 = new HashMap<Object_1,Object_2>(hashMap_1);
创建了新的 HashMap 对象(hashMap_2)
两种表达的区别是赋值和初始化
正如每个人所说
hashMap_2 = hashMap_1; --> 将 HashMap1 的引用分配给 hashMap_2
和
hashMap_2 = 新的 HashMap(hashMap_1); --> 导致创建另一个哈希图。
添加以下点
在这两种情况下,存储在 hashmap2 和 hashMap_1 中的对象都是相同的。两者都不会进行深度克隆