java基础
Acqierement
这个作者很懒,什么都没留下…
展开
-
java类加载顺序,一题全搞懂
来直接做题,看看会打印什么。大家自己把答案写下来,注意看清楚上下文,有些变量在最后面。类结构参考java编程思想5.7.2 静态数据的初始化,比原来的结构复杂一点。父类Parentpublic class Parent { static Bowl bow5 = new Bowl(5); Bowl bow6 = new Bowl(6); static { System.out.println("执行Parent静态代码块"); } {原创 2020-09-04 13:47:18 · 171 阅读 · 0 评论 -
ConcurrentHashMap详解
jdk1.7版本和其他并发集合的区别待完善数据结构 /** * The segments, each of which is a specialized hash table. */ final Segment<K,V>[] segments;可以看到主要就是一个Segment数组,注释也写了,每个都是一个特殊的hash table。来看一下Segment是什么东西。static final class Segment<K,V> ex原创 2020-06-08 10:02:21 · 290 阅读 · 0 评论 -
HashMap在jdk1.7和1.8中的区别
HashMap在jdk1.7和1.8中的区别1.数据结构Java 7及以前是数组+链表、Java 8及以后是数组+链表+红黑树。1.8中,当链表长度到达8的时候,会转化成红黑树。2.插入链表的方式1.7是头插法,1.8是尾插法3.扩容时,调整数据的方式1.7其实就是根据hash值重新计算索引位置,然后将数据重新放到应该在的位置。而1.8优化了一下,扩容之后,每个数据要么在原来的位置,要么就在j + oldCap的位置,j是原来的下标位置,oldcap就是原来数组的大小。至于这个具体原因可以看原创 2020-05-29 16:12:43 · 324 阅读 · 0 评论 -
HashMap jdk1.7和1.8详解
HashMap详解1.7的HashMap首先来看一下它的数据结构transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;其实就是一个Entry数组Entry的属性是这样的 final K key; V value; Entry<K,V> next; int hash; // 构造函数 Entry(int h, K k,原创 2020-05-29 16:00:43 · 304 阅读 · 0 评论