Java
232 篇笔记
- 5.9 Stringhistorical
1. 是什么 不可变、线程安全的字符串 2. 使用 3. 源码分析 3.1. 类的定义 String是不可变的 - 类使用final修饰 - 内部属性char value[]使用final修饰,说明引用不能改变 - 且内部没有对外提供修改内部属性char value[]的方法 3.2. 构造方法 3
- 5.10 LinkedListhistorical
1. 是什么 底层由双向链表实现的顺序表 有序、可以重复 2. 如何使用 3. 原理分析 3.1. uml 可以看出LinkedList是个List、双端队列、可序列化、可克隆 3.2. 构造方法 由头节点、尾节点、长度构成 3.2.1. 队列的节点Node 结构如下图: 3.3. add方法 -
- 5.11 LinkedHashMaphistorical
1. 是什么 - 使用双向链表+HashMap(数组+链表+红黑树)实现 - 相比于HashMap保存了顺序 - 迭代时输出的顺序是 - 按照插入节点的顺序来输出 - 也可以指定成按照访问的顺序输出(LRU) 2. 使用 - 按照插入节点的顺序来输出 - 按照访问的顺序输出 3. 实现 3.1. u
- 5.12 不可变对象historical
如何创建一个不可变对象 - 类使用final修饰 - 内部属性使用final修饰 - 如果是这个属性是引用对象 - 没有对外提供修改内部属性value的方法 - 如果对外返回的是copy过的对象
- 5.13 LinkedHashSethistorical
1. 是什么 2. 如何使用 3. 源码分析 3.1. 1.构造方法 3.2. 2.属性 3.3. 3.其他方法 同LinkedHashMap.md 4. 总结 底层使用LinkedHashMap实现,value使用newObject作为占位符
- 5.14 StringBufferhistorical
1. 是什么 线程安全的、可变字符串 其实就是在StringBuilder的基础上加了synchronized关键字 2. 如何使用 3. 原理分析 3.1. 构造函数 3.2. append方法 3.3. toString 3.4. subString
- 5.16 Map比较historical
1. HashMap1.7 vs HashMap1.8 HashMap1.7 HashMap1.8 ---------------------------- ---------- --------------- 数据结构 数组+链表 数组+链表+红黑树 冲突时链表中是头插法还是尾插法 头插 尾插 -
- 5.18 StringBuilderhistorical
1. 是什么 可变的、线程不安全的字符串 有点像ArrayList的实现,底层使用char数组,不够容量时需要扩容 2. 如何使用 3. 原理分析 3.1. 构造方法 3.2. append方法 直接在内部的char数组后面添加字符 如果容量不够需要扩容,为原来的2倍+2 - AbstractBui