JDK源码学习记录
文章平均质量分 80
学习JDK1.8源码笔记
小小本科生debug
但日子还长,机会也还会有的,不用总是匆匆忙忙那么慌张。
展开
-
Object源码分析
java.lang.Object类是Java语言中的根类,即所有类的父类。如果一个类没有特别指定父类, 那么默认则继承自Object类。// ... }原创 2020-10-15 16:44:48 · 251 阅读 · 0 评论 -
String、StringBuffer、StringBuilder源码解读,常量池
2、如果拼接的字符串中包含变量,则在编译时编译器采用StringBuilder对其进行优化,即自动创建StringBuilder实例并调用其append()方法,将这些字符串拼接在一起,效率也很高。最终 str2 指向的是堆中的空间地址。1、如果拼接的都是字符串直接量,则在编译时编译器会将其直接优化为一个完整的字符串,和你直接写一个完整的字符串是一样的,所以效率非常的高。:先从常量池中查看是否有"hello",如果有则直接指向,如果没有就先创建,然后再指向,最终 str1 指向的是常量池中的空间地址。原创 2021-08-31 21:51:23 · 595 阅读 · 2 评论 -
TreeMap源码解读,初识红黑树
TreeMap源码解读一:红黑树简介二:TreeMap简介 一:红黑树简介 1、红黑树是一种特殊的二叉查找树。红黑树的每个结点上都有存储位表示结点的颜色,可以是红 (Red)或黑(Black)。 2、红黑树的每个结点是黑色或者红色。当是不管怎么样他的根结点是黑色。每个叶子结点(叶子结点 代表终结、结尾的节点)也是黑色 [注意:这里叶子结点,是指为空(NIL或NULL)的叶子结点! 3、如果一个结点是红色的,则它的子结点必须是黑色的。 4、每个结点到叶子结点NIL所经过的黑色结点的个数一样的。[确保没有一条路原创 2021-08-28 16:02:14 · 296 阅读 · 0 评论 -
HashSet源码解读
HashSet源码解读 首先我们都知道Set集合中的元素是无序的且不可重复 那么这个是为什么呢? 这就需要我们来深入的看一下HashSet的源码了; HashSet<Integer> hashSet = new HashSet<>(); hashSet.add(5); hashSet.add(1); hashSet.add(5); 当new一个HashSet时,我们来看它的构造方法: 发现它其实是new了一个HashMap,那么实际上HashSet的底层其原创 2021-08-28 01:15:20 · 241 阅读 · 0 评论 -
JDK源码阅读顺序
JDK源码阅读顺序1、java.lang2、java.util3、java.util.concurrent4、java.util.concurrent.atomic5、java.lang.reflect6、java.lang.annotation7、java.util.concurrent.locks8、java.io9、java.nio10、java.sql11、java.net JAVA集合框架图 标题为包名,后面序号为优先级1-4,优先级递减 。 1、java.lang 1) Object 1 2)原创 2021-08-26 15:20:27 · 680 阅读 · 0 评论 -
LinkedList源码解读
LinkedList源码解读 LinkedList 的底层是基于双向链表来实现的 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next =原创 2021-08-26 13:29:09 · 172 阅读 · 0 评论 -
HashMap源码解读,扩容操作
在JDK8中HashMap,是由 数组+链表+红黑树 组成的 数组结构: transient Node<K,V>[] table; 链表结构: HashMap<String, Double> hashmap = new HashMap<>(); map.put("k1",0.1); map.put("k2",0.2); map.put("k3",0.3); map.put("k4",0.4); 构造函数: 向has原创 2021-08-25 21:10:46 · 821 阅读 · 3 评论 -
Integer源码解读
Java-Integer源码解读问题导入二级目录三级目录 问题导入 Integer a=9527; Integer b=9527; System.out.println(a==b); System.out.println(a.equals(b)); Integer c=97; Integer d=97; System.out.println(c==d); System.out.println(c原创 2021-08-24 12:33:13 · 537 阅读 · 0 评论 -
ArrayList源码解读,扩容操作
ArrayList<Integer> arrayList = new ArrayList<>(); arrayList.add(1); arrayList.add(2); arrayList.add(3); 空参构造器: Object[ ] elementData 底层定义的数组 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }原创 2021-08-25 11:06:45 · 179 阅读 · 0 评论