这两种初始化哈希映射的方法有什么区别



两者有什么区别:

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中的对象将是相同的。两者都不会进行深度克隆

最新更新