
源码解析
文章平均质量分 89
冷面寒枪biu
怕什么真理无穷, 进一寸有一寸的欢喜
展开
-
JDK源码解析基础篇--java.lang.Object及其方法约定
这是源码阅读的开端,当然选择从类层次结构的根类--java.lang.Object类开始。 所有类的默认继承Object类(若没有继承其他类),Object类是继承体系的根类,由类直接或间接继承。Object方法分类 首先,可以先看一下Object类中有哪些方法。 方法很少,很简单对不对!但是这些方法都很重要,可以将这些方法分一下类。它非final方法有:equals,hashCode,toS原创 2017-07-22 22:48:21 · 888 阅读 · 0 评论 -
JDK源码解析基础篇-8种基本数据类型的包装类及相关讨论
这是源码解析系列的第二篇,依然来学习java.lang包下常用的类–8种基本数据类型对应的包装类。将从概念到源码进行学习,并对其缓存、自动拆装箱的语法糖等注意点进行分析。 在开始之前,今天看到一个有趣问题:Java到底是纯面向对象语言吗?有人认为是,有人认为不是。认为不是的因为:(1)类的static修饰的静态内容(变量和方法)不属于任何对象,所以这是非对象的东西;(2)所有的8种基本数据类型都不原创 2017-07-30 22:20:38 · 840 阅读 · 0 评论 -
JDK源码解析集合篇--综述
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。在JDK1.5后,util包下加入了concurrent包,更加完善了集合框架对于并发多线程情况下的处理原创 2017-08-30 21:59:17 · 1255 阅读 · 1 评论 -
JDK源码解析集合篇--LinkedList全解析
LinkedList是基于链表实现的,链表和数组是两种不同的线性物理存储结构,具体不再介绍链表的用法,这是基本的数据结构知识。LinkedList是通过双向链表的实现,即:链表中任意一个存储单元都可以通过向前或者向后寻址的方式获取到其前一个存储单元和其后一个存储单元。对于此,可看LinkedList的源码节点的定义: private static class Node<E> {原创 2017-08-31 17:13:36 · 436 阅读 · 0 评论 -
JDK源码解析集合篇--ArrayList全解析
对于一个集合的使用,我们首先关注的是: 1、 增删改查的特点(时间复杂度是怎样的) 适用于随机访问 2、是否允许空 允许为空 3、是否允许重复数据 允许 4、是否有序,有序的意思是读取数据的顺序和存放数据的顺序是否一致 有序 5、是否线程安全 非线程安全ArrayList实现原理ArrayList就是一个以数组形式实现的集合,但是它实现了长度可变。我们可以看其源码属性:原创 2017-08-31 11:32:29 · 333 阅读 · 0 评论 -
JDK源码解析集合篇--HashMap无敌全解析
前两篇写了Collection体系的List下的ArrayList与LinkedList,另外一部分是Set集合下的集合类,但是Set集合的实现类基本是由Map集合的实现类实现的,所以先分析一下重要的HashMap。 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表存储区间离散,占用内存比较宽松,故空间复杂原创 2017-09-01 12:08:29 · 582 阅读 · 0 评论 -
JDK源码解析基础篇-String、StringBuilder、StringBuffer
首先向搞懂常量池的知识点:触摸Java常量池 常量池技术 java.lang包的最后一篇基础篇。搞完这篇就开始集合框架和并发包等内容。Sting、StirngBuilder、StringBuffer的内容很早之前写过 String、StringBuffer和StringBuilder的区别和应用场景 ,但写的太简单了。这次再重新梳理一下这部分内容,留作以后复习。 在 java 语言中, 用来处理原创 2017-08-29 11:55:31 · 385 阅读 · 0 评论