栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Java---JDK1.8底层源码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java---JDK1.8底层源码

字符串 不可变字符串String

本质:底层是一个char类型的数组value[]

String str = “abc”;
等价于:
char data[] = {‘a’,‘b’,‘c’};
String str = new String(data);

常用方法

substring,concat,replace,split,toString

equals

compareTo

可变字符串

StringBuilder

父类:AbstractStringBuilder

StringBuilder sb = new StringBuilder()
表面上调用StringBuilder的空构造器,实际底层是对value数组进行初始化,长度为16

char[] value:value就是StringBuiler底层的存储int count:count指的是value数组中被使用的长度

数组扩容

value = Arrays.copyOf(value,
newCapacity(minimumCapacity));

常用方法:append delete deleteCharAt insert replace

StringBuffer

父类:AbstractStringBuilder

区别和联系

StringBuilder: 效率高, 线程不安全StringBuffer: 效率低,线程安全 集合

集合有一个特点:只能存放引用数据类型的数据

Collection接口

增加:add(E e) addAll(Collection c)
删除:clear() remove(Object o)
查看:iterator() size()
判断:contains(Object o) equals(Object o) isEmpty()
遍历方式:
方式1:增强for循环
方式2:迭代器 iterator

List接口

不唯一 有序
常用方法:
增加:add(int index,E element)
删除:remove(int index) remove(Object o)
修改:set(int index, E element)
查看:get(int index)
三种遍历方式:
方式1:普通for
方式2:增强for
方式2:迭代器

ArrayList

源码类似StringBuilder
实质就是线性表

继承:AbstractList 实现 List接口

底层重要属性

底层的数组:Object[] elementData Object类型size:数组中有效数据的长度

Vector

ArrayList和Vector区别与联系:
联系:底层都是数组的扩容
区别:ArrayList底层扩容长度为原数组的1.5倍,线程不安全。Vector底层扩容长度为原数组的2倍,线程安全。

泛型

ArrayList al = new ArrayList();

泛型实际就是一个<>引起来的参数类型,这个参数类型具体在使用的时候才会确定具体的类型。

对存入集合中的数据类型进行限制

加入泛型的优点:在编译时期就会对类型进行检查,不是泛型对应的类型就不可以添加入这个集合。

linkedList

常用方法:
增加:addFirst(E e) addLast(E e)
offer(E e) offerFirst(E e) offerLast(E e)
删除: poll() pollFirst() pollLast() removeFirst() removeLast()
查看:element() getFirst() getLast()
indexOf(Object o) LastIndexOf(Object o)
peek() peekFirst() peekLast()
底层就是双向链表

ArrayList-实现–> List-extends–>Collection-extends–>Iterable —iterator()

Set接口

唯一 无序
遍历方式:(1)迭代器 (2)增强for循环

HashSet

放入自定义数据类型不满足唯一 无序

linkedHastSet

特点:唯一 有序(按照输入顺序进行输出)

TreeSet

特点:唯一 有序(按照升序进行遍历输出)
原理:底层就是一个二叉树

底层实现了内部比较器

Map接口

特点:无序 唯一

HashMap

特点:无序 唯一

Hashtable

TreeMap

多线程 Runnable

Thread Callable

刚才翻笔记时,找到以前学习java时整理的一篇xmind笔记,导出md格式然后上传上来共诸君看。现在来看,这份笔记整理的很简单,可能当时学java时没有很深入,理解也不够深。最近在深入学习C++时,看了些STL源码,相比之下C++STL源码比java底层源码难很多,后期整理了STL源码也会传上来,供大家参考。
不管学习什么框架,仅仅做到熟练使用它,是不够的,我们应该深入其源码,明白其原理,甚至自己也能写出这样的框架来。这是最近一段时间看书的感悟,以后要多看看源码。最后引用C++大佬侯捷一句话:“使用一个东西,而不明白其原理,不高明”。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783932.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号