Java基础
文章平均质量分 97
小伙子什么车
这个作者很懒,什么都没留下…
展开
-
【Java杂谈】fail-fast与fail-safe
fail-fast与fail-safefail-fastArrayList的Iterator遍历是fail-fast的,直接在原来的数组上遍历,当发现原来的数组结构改变时会抛出ConcurrentModificationException异常。ArrayList中有一个int型成员变量modCount,ArrayList的Iterator中保存了一个int型变量expectedModCount默认值为此时ArrayList的modCount。**当调用ArrayList的add()、remove()和原创 2020-07-12 11:18:31 · 158 阅读 · 0 评论 -
【Java杂谈】String字符串常量池
String杂谈String s = new String(“abc”)产生几个对象?首先会检查常量池中是否有“abc”这个对象如果没有,则先在常量池中创建“abc”对象,然后在堆中创建String对象,其中的value指向常量池中的“abc”如果有,则只在堆中创建String对象总结:常量池中没有“abc”对象则会创建2个对象,常量池中有“abc”对象则会创建1个对象。关于String.inner()方法先说结论:jdk1.7之前,intern()方法会把首次遇到的字符串实例复制到方法原创 2020-07-12 11:17:31 · 263 阅读 · 0 评论 -
【多线程高并发系列】J.U.C并发容器
J.U.C并发容器同步容器如Vector、Hashtable、Collections.synchronizedXXX虽然保证线程安全,但同一时间只允许有一个线程访问,使各个线程的操作变成了线性操作。为了提高并发度,juc包下的并发容器诞生。并发容器List、Set、Map一、ConcurrentHashMapJDK1.7JDK1.7采用数组+链表,结构与1.7的HashMap类似。使用分段锁思想保证线程安全。每个ConcurrentHashMap中有一个Segment[]数组,每个Se原创 2020-07-12 11:02:19 · 276 阅读 · 0 评论 -
【Java集合框架】Map
HashMap(可以存null键)JDK1.7之前采用数组+链表的结构,插入元素使用头插法。JDK1.8之后采用数组+链表+红黑树结构,使用尾插法。在JDK1.7时,可能会因为hashcode计算的不得当而造成链表过长的问题,查找时可能会遍历链表,时间复杂度O(n)。JDK1.8添加了红黑树结构,红黑树是平衡查找树,查找过程是二分的,复杂度O(logn)。默认容量为16,加载因子为0.......原创 2020-03-20 16:37:45 · 182 阅读 · 0 评论 -
【Java集合框架】Collection
List接口实现类(能添加多个null值)线程不安全的Collection和Map都能用Collections.synchronizedXXX()使其成为同步容器(线程安全)。ArrayListArrayList底层维护一个Object数组,如果不指定初始容量的话会先创建一个空数组,在第一次add()的时候将容量扩容为10。扩容、删除等操作大多是使用System.arraycopy。a...原创 2020-03-20 08:21:58 · 137 阅读 · 0 评论