
Java源码分析
张云生
Don't complain,don't explain
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java线程安全类之CopyOnWriteArrayList、CopyOnWriteArraySet
CopyOnWriteArrayList、CopyOnWriteArraySet是两个线程安全的集合。1、CopyOnWriteArrayList 底层是一个数组实现的构造函数如下:public CopyOnWriteArrayList() { array = (E[]) new Object[0]; }array是用volatile 修饰的: private volati原创 2018-01-19 09:34:37 · 304 阅读 · 0 评论 -
Collections.emptyList() 和 Collections.EMPTY_LIST的区别
最近看到了java中的Collections.emptyList() 和 Collections.EMPTY_LIST ,网上大多数的说法都有问题,只是解释了支持泛型和不支持泛型。下面我就说下两者的区别。一、Collections.emptyList()的源码:public static final List emptyList() { return (List) EMPTY_LIST;原创 2017-12-15 12:01:34 · 1042 阅读 · 0 评论 -
StringBuffer和StringBuilder源码分析
StringBuffer和StringBuilder都继承于AbstractStringBuilder,底层为char数组实现的,两者都是使用AbstractStringBuilder的构造函数初始化的,默认大小是16。构造函数如下:AbstractStringBuilder(int capacity) { value = new char[capacity];}StringBu原创 2018-01-19 13:35:37 · 273 阅读 · 0 评论 -
ArrayList和HashSet源码分析
list的元素可以重复,set的元素不可重复。1、ArrayList的底层实现是一个数组; List list = new ArrayList();这样创建一个list时,会创建一个大小为10的数组; 如果超过数组的长度时,会自动扩容,扩容 按照原来数组的1.5倍扩容。 int newCapacity = (oldCapacity * 3)/2 + 1;2、HashSet的底层实现是 Hash原创 2018-01-19 13:57:08 · 266 阅读 · 0 评论