[英]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.