java2

serial parnew 并行
serial old cms 并行
G1

string ,字符串不可变性指的是因为它是finally所以不能被赋予新值。要想修改,就要建新的,即在方法区的常量池中,只能有一份,相同字符串,就是因为他是finally

java2
在这里插入图片描述
java2
java2
string buffer 和stringbuilder 和string 三者的异同
string 不可变 不对之前数组做修改 使用char型的数组
string buffer 长度可变 线程安全 加了syn char的数组
string builder 可变线程不安全 char数组
方法差不多一样
string str :new string():new char【10】
string str:new string(“abc”)new char【】{“a”“b”“c”}
buffer 初始化长度为16 的数组 如果初始化有长度,那么总长度就是len+16 扩容原来长度*2+2 甚至可以指定容量 效率高
java集合
collection 接口体系
list 有序可重复 vector arraylist linedlist
set 无序不可重复 hashset hashlinkedset treeset
map 接口体系
hashtable properties
hashmap linkedhashmap
treemap
list实现类 vector arraylist linkedlist 异同 有序可重复 单列
arraylist 是list 的主要实现类 线程不安全 new 一个object【】数组
vector 古老实现类 线程安全 object【】数组
listedlist 双向链表 所以就是数组和而链表区别
arraylist 底层分析
1.7 初始化容量为10 的object【】数组
扩容为原来的1.5倍 若还不够直接拿他的长度 最大整形最大值 所以和string b 一样 不用空参 可直接设置长度
1.8 在 new 对象时并不会底层数组实例化 二十在add操作才初始化
linkedlist 插入删除
E item
Node 《e》 next
node《e》prev
vector 就是线程安全 扩容为原来的二倍
set 实现类 hashset 主要实现 类 线程不安全
linkedhashset 子类可安添加顺序遍历
treeset 底层是红黑树
可排序所以是同一个类
set无序不可重复 但是set底层也是16 的数组
根据数据hash值来确定在数组的位置 用的equals 先找到 hash值,然后算索引位置 有一次检测hash值是否一样,若一样在判断equals,自己也能写哈市code但是容易一样 所以用它的 会减少冲突
选大的 2次方有优化 31 是素数
treeset 添加的类是相同对象
直接按照数据排好了序
hash map 原理
hashmap new hashmap 长度为16的entry【】table 调用key 的hashcode()计算 key,哈希值 找到entry数组存放的位置, map中添加相同就会修改。扩容为原来容量2倍
jdk7 数组+链表
jdk8 数组+链表+红黑树 链表个数>8 长度>64改红黑树 长度16 加载因子0.75