繁体   English   中英

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

[英]What is the difference between these two ways of initializing a HashMap?

两者有什么区别 :

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_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对象(hashMap_2)已创建

两种表达方式的区别在于分配和初始化

正如每个人所说

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

hashMap_2 =新的HashMap(hashMap_1); ->导致创建另一个哈希图。

在下面添加

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM