import java.util.HashMap;
class Key {
	String s;
	Key(String s) {
		this.s = new String(s);
	}
	@Override
	public boolean equals(Object obj) {
		if (obj instanceof Key) {
			if (s.equals(((Key) obj).s)) {
				return true;
			}
		}
		return false;
	}
	@Override
	public int hashCode() {
		return s.hashCode();
	}
	@Override
	public String toString() {
		return s;
	}
}
class Value {
	String s;
	Value(String s) {
		this.s = new String(s);
	}
	@Override
	public String toString() {
		return s;
	}
}
public class Main {
	public static void main(String[] args) {
		HashMap<String, String> a = new HashMap<>();
		String usr = "weidiao", password = "20124003";
		a.put(usr, password);
		usr = "haha";
		System.out.println(a.get(usr));
		password = "haha";
		System.out.println(a.get("weidiao"));

		HashMap<Key, Value> b = new HashMap<>();
		Key k = new Key("weidiao");
		Value v = new Value("20124003");
		b.put(k, v);
		k.s = "haha";
		for (Key i : b.keySet()) {
			System.out.println(i + " : " + b.get(i));
		}
	}
}

输出为:
null
20124003
haha : null

在这个问题中,改变了Key的值,就再也找不到“20124003”了,因为没有“weidiao”这个key了已经。而根据新key “haha”定位到的value为null。

如果为String类型,那就是深复制,就相当于复制了完完全全的一份,就相当于C++中的结构体复制。

如果为其他引用类型的数据,那就会浅复制,只复制了指针。
如果为基本数据类型,那就是深复制,String也是深复制。

如果为自定义类型,那就是浅复制。

java泛型中的对象的更多相关文章

  1. Java泛型中E、T、K、V等的含义

     Java泛型中的标记符含义:  E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Numbe ...

  2. Java泛型中extends和super的理解(转)

    E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定 ...

  3. Java泛型中的标记符含义

    Java泛型中的标记符含义:  E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...

  4. 【转】聊一聊-JAVA 泛型中的通配符 T,E,K,V,?

    原文:https://juejin.im/post/5d5789d26fb9a06ad0056bd9 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型 ...

  5. java泛型中特殊符号的含义

    java泛型中的标记符含义:  E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...

  6. Java泛型中extends和super的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

  7. Java泛型中<?> 和 <? extends Object>的异同分析

    相信很多人和我一样,接触Java多年,却仍旧搞不清楚 Java 泛型中 <?>和 <? extends Object>的相似和不同.但是,这应该是一个比较高端大气上档次的Que ...

  8. Java泛型中的通配符T,E,K,V

    Java泛型中的通配符T,E,K,V 1.泛型的好处 2.泛型中的通配符 2.1 T,E,K,V,? 2.2 ?无界通配符 2.3 上界通配符 < ? extends E> 2.4 下界通 ...

  9. Java泛型中的细节

    Java泛型中的细节 如果没有泛型 学习Java,必不可少的一个过程就是需要掌握泛型.泛型起源于JDK1.5,为什么我们要使用泛型呢?泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一 ...

随机推荐

  1. android 动态设置Framelayout,view,imageView,Layout高度

    直接:测试可以 Framelayout.getLayoutParams().width=600;Framelayout.getLayoutParams().height=400; 如:view,ima ...

  2. python setuptools工具打包

    http://blog.csdn.net/five3/article/details/7847551http://blog.csdn.net/reyoung1110/article/details/7 ...

  3. PHP Redis

    <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Myredis { //redis所 ...

  4. html5 datalist自动完成

    1.传统输入框 <label for="favorite_team">Favorite Team:</label> <input type=" ...

  5. [转]ASP.NET MVC IOC 之AutoFac攻略

    本文转自:http://www.cnblogs.com/WeiGe/p/3871451.html 一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用A ...

  6. PHP&MySQL(二)——困也得啃书

    madan,所有事情都敢赶在一起...以后每天中午去学车啊,好开心..晚上好困,但是困也得啃书........ 二.PHP脚本编程语言 什么变量啊,数据类型啊,特别特别基本的不记录了,说点容易忽略的. ...

  7. Vijos1680距离/openjudge2988计算字符串的距离[DP]

    描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb_c_”,“_a_bcbcd_”和“abcb_c_”都是X的扩展 ...

  8. 第15章 设备无关位图_15.3 DIB和DDB的结合

    第15章 设备相关位图_15.3 DIB和DDB的结合 15.3.1 从DIB创建DDB (1)hBitmap =CreateDIBitmap(…)——注意这名称会误导,实际上创建的是DDB 参数 说 ...

  9. Github 扩展推荐

    前言 github是个知识的宝库,分享一下自己浏览github使用的浏览器扩展. octotree 功能简介:以文件组织的结构方式查看仓库,再也不用一级一级地翻目录啦.下载单个文件 源码:https: ...

  10. News新闻发布系统

            News新闻发布系统分页的实现 1.首先我们要在NewsDAO中创建一个方法,返回List<NewsEntity>集合,其中pageIndex表示当前页,pageSize表 ...