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