摘要:
equals和hashCode方法 equals 我们知道equals是用来比较两个对象是否相等的,比如我们常用的String.equals方法 hashCode方法 hashCode方法是通过一定的算法得到一个hash值,一般配合散列集合一起使用,如HashMap、HashSet都是不可以存放重复 阅读全文
摘要:
静态代理 为某个对象提供一个代理,以控制对这个对象的访问。 代理类和被代理类有共同的父类或父接口,这样在任何使用被代理类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给被代理对象处理、以及被代理对象执行完请求后的后续处理。 代理类是手动编写的代码,在编译期代理类和被代理类的 阅读全文
摘要:
饿汉式 静态变量方式 public class Singleton1 { private final static Singleton1 instance=new Singleton1(); private Singleton1() {} public static Singleton1 getIn 阅读全文
摘要:
StringBuilder、StringBuffer源码分析 StringBuilder源码分析 类结构 StringBuilder使用final关键字修饰,和String一样不可以被继承 StringBuilder继承AbstractStringBuilder并实现了Serializable和Ch 阅读全文
摘要:
String源码分析 类结构 String类实现了Serializable可以被序列化 String类实现了Comparable可以进行比较 String类实现了CharSequence可以按下标进行相关操作 并且String类使用final进行修饰,不可以被继承 属性 构造方法 方法 静态方法 j 阅读全文
摘要:
LinkedHashMap源码分析 为什么要有LinkedHashMap? 在分析HashMap的时候提到了HashMap是无序的,即添加节点的顺序和遍历的顺序不一致 LinkedHashMap保证节点的顺序,这也是LinkedHashMap和HashMap的主要区别 存储示意图 类结构 Linke 阅读全文
摘要:
Hashtable源码分析 类结构 Hashtable继承自Dictionary实现了Map接口。 Hashtable实现了Cloneable可以进行克隆。 Hashtable实现了Serializable可以进行序列化。 属性 节点 构造器 方法 Hashtable的所有方法都加了synchron 阅读全文
摘要:
HashSet源码分析 简介 HashSet不能存放重复的值,且不保证存放的顺序。 类结构 HashSet继承自AbstractSet并重写了方法 HashSet实现可Cloneable接口,可被克隆 HashSet实现了Serializable接口,可以被序列化 属性 构造器 方法 iterato 阅读全文
摘要:
HashMap源码分析 简介 HashMap是一个底层用数组+链表实现的存储KV键值对数据结构,它允许null键和null值。 原理 HashMap的存储规则是,根据K的hashCode运算得到hash值,然后根据hash值运算得到下标,如果数组中该下标没有值就放入,有值就一个一个比较是否hash值 阅读全文
摘要:
ArrayList、LinkedList和Vector源码分析 ArrayList ArrayList是一个底层使用数组来存储对象,但不是线程安全的集合类 ArrayList的类结构关系 ArrayList实现了List接口,List接口中定义了一些对列表通过下标进行添加删除等方法 ArrayLis 阅读全文
摘要:
Java序列化Serialize 序列化与反序列化 序列化:把对象写入到流中 反序列化:把对象从流中读取出来 什么情况下序列化 1. 对象需要通过网络进行传输 2. 需要持久化对象到磁盘 3. 需要持久化对象到数据库(把对象通过字节流的方式存储) 序列化的实现方式 实现Serializable接口 阅读全文