java泛型中的对象
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泛型中的对象的更多相关文章
- Java泛型中E、T、K、V等的含义
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Numbe ...
- Java泛型中extends和super的理解(转)
E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定 ...
- Java泛型中的标记符含义
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...
- 【转】聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
原文:https://juejin.im/post/5d5789d26fb9a06ad0056bd9 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型 ...
- java泛型中特殊符号的含义
java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...
- Java泛型中extends和super的区别?
<? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...
- Java泛型中<?> 和 <? extends Object>的异同分析
相信很多人和我一样,接触Java多年,却仍旧搞不清楚 Java 泛型中 <?>和 <? extends Object>的相似和不同.但是,这应该是一个比较高端大气上档次的Que ...
- 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 下界通 ...
- Java泛型中的细节
Java泛型中的细节 如果没有泛型 学习Java,必不可少的一个过程就是需要掌握泛型.泛型起源于JDK1.5,为什么我们要使用泛型呢?泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一 ...
随机推荐
- Jmeter默认报告优化
一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...
- iNeedle产品介绍
一.产品简介 1.产品背景 1.您曾经遇到过下面的问题和烦恼吗?2.当网站上线以后,如何实时的了解网站的运行状况?3.当网站访问速度慢,是升级服务器?还是升级带宽?还是优化网站代码?4.当网站新上线一 ...
- android EditText光标位置(定位到最后)
方法:edittext.setSelection(int); et.setText(content);//设置EditText控件的内容et.setSelection(content.length() ...
- 利用网络流传的WebShell默认密码库寻找WebShell
声明:本文提到的技术,仅可用作网络安全加固等合法正当目的.本文作者无法鉴别判断读者阅读本文的真实目的,敬请读者在本国法律所允许范围内阅读本文,读者一旦因非法使用本文提到技术而违反国家相关的法律法规,所 ...
- web性能优化系列之网站瓶颈识别
最近,公司网站的的访问量日益增大,PV马上过百万了.前期网站一到访问高峰,马上会变得很卡甚至打不开,后来做了很多优化后现在访问比较顺畅了.经过此事明白了一个道理,在遇到这类问题要做到两点,第一要相信自 ...
- vim IDE平台-打造属于自己的配置
vim IDE平台-打造属于自己的配置 一.前言 目前工作环境基本以Linux为主,自然用到VIM也很多,很早就对如何提高VIM的使用效率有所研究,限于时间关系,也没做个系统记录和资料积累,时间久了又 ...
- System V进程间通信
一)Linux环境进程间通信(一)管道及有名管道http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/二)Linux环境进程间通信(二): 信号 ...
- Unity C# 反编译
前言 结合前篇:[反编译U3D]Decompile Unity Resources 修正 本篇说说如何查看unity项目(apk) 的源代码,前提是这个apk的代码未经过加密. 写这篇的目地就是看看别 ...
- jqueryUI小案例
实现上面的功能: <%@ page language="java" import="java.util.*" pageEncoding="utf ...
- IDF实验室WORD隐写术
上帝也哭泣http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=48 下载下来,发现是一个word文档,看来信息应该就 ...