JDK源码
文章平均质量分 59
带你一起来读Java源码
十步杀一人_千里不留行
当你还不能写出自己满意的程序时,你就不要去睡觉。
展开
-
JDK源码(21)-Unsafe
接下来再看一个JDK中比较特殊的类Unsafe。一、概述Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个...原创 2020-03-27 16:06:22 · 974 阅读 · 1 评论 -
JDK源码(20)-Thread
一、概述此线程指的是执行程序中的线程。Java虚拟机允许应用程序同时执行多个执行线程。每个线程都有优先权。具有较高优先级的线程优先于优先级较低的线程执行。每个线程可能也可能不会被标记为守护程序。当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护线程。当Java虚拟机启动时,通常有一个非守...原创 2019-12-27 17:27:07 · 2645 阅读 · 1 评论 -
JDK源码(19)-Void
一、概述Void类是一个不可实例化的占位符类,用于保存对表示Java关键字void的类对象的引用。//void对应的伪类型。public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");//私有构造不能实例化private Void() {}...原创 2019-12-26 23:19:27 · 2719 阅读 · 0 评论 -
JDK源码(19)-Package
一、概述Package对象包含有关Java包的实现和规范的版本信息。该版本信息由加载该类的ClassLoader实例检索并提供。通常,它存储在与类分发的清单中。构成包的一组类可以实现特定的规范。在每个ClassLoader实例中,来自同一个java包的所有类都具有相同的Package对象。静态方法允许通过名称找到一个包,或者找到当前类加载器已知的所有包的集合。二、方法//返...原创 2019-12-26 23:11:49 · 2212 阅读 · 0 评论 -
JDK源码(18)-System
一、概述System是用的非常多的一个final类。它不能被实例化。System类提供了标准的输入输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;以及高效的拷贝数组中一部分元素的方法。二、类定义和属性public final class System 三个流:public final static InputStream in = null;publ...原创 2019-12-26 22:52:37 · 2111 阅读 · 0 评论 -
JDK源码(17)-Compiler
一、概述Compiler这个类被用于支持Java到本地代码编译器和相关服务。在设计上,这个类啥也不做,他充当JIT编译器实现的占位符。放JVM虚拟机首次启动时,他确定系统属性java.compiler是否存在(系统属性可以通过System类的getProperty(String)和getProperty(String,String)方法获取)。如果存在,就被认定为是库的名称(跟平台依赖相关...原创 2019-12-25 22:55:57 · 2371 阅读 · 0 评论 -
JDK源码(16)-ClassLoader
一、概述这个类的作用就是根据一个指定的类的全限定名,找到对应的Class字节码文件,然后加载它转化成一个java.lang.Class类的一个实例。二、类加载器介绍启动类加载器(Bootstrap ClassLoader):这个类加载器负责将\lib目录下的类库加载到虚拟机内存中,用来加载java的核心库,此类加载器并不继承于java.lang.ClassLoader,...原创 2019-12-22 22:47:01 · 1472 阅读 · 1 评论 -
JDK源码(15)-Class
一、概述Class的实例代表着正在运行的Java应用程序的类和接口。枚举是一种类,而直接是一种接口。每一个数组也属于一个类,这个类b被反射为具有相同元素类型和维数的所有数组共享的类对象。八大基本树类型和void关键字也都有属于自己的类对象。Class没有public的构造器,由JVM虚拟机调用类加载器中的defineClass方法来构造。二、代码剖析类定义:public fi...原创 2019-12-22 22:26:57 · 1311 阅读 · 0 评论 -
JDK源码(14)-Error、Exception
一、概述前面讲了Throwable,而Error和Exception都是Throwable的子类,Error代表出现的是严重错误,应用程序不应该用trycatch去捕获并且进行处理。绝大多数的Error都是非正常的,就根本不该出现的。Exception则设计被用来交由程序去处理。二、方法和属性这两个类都很简单,而且方法都是调用Throwable的对应实现。分别只有五个构造方法。...原创 2019-12-22 20:52:22 · 1468 阅读 · 0 评论 -
JDK源码(13)-Throwable
一、概述Throwable:被用来表示任何可以作为异常被抛出的类。有两个重要的子类Exception和Eerror。二者都是Java异常处理的重要子类,并且二者也包含许多重要的子类。通常用于指示发生了异常情况。类定义:public class Throwable implements Serializable二、常见方法解析常量...原创 2019-12-21 11:21:08 · 1033 阅读 · 0 评论 -
JDK源码(12)-Enum
一、概述Enum是所有Jav中枚举类的基类。详细的介绍在Java语言规范中有说明。值得注意的是,java.util.EnumSet和java.util.EnumMap是Enum的两个高效实现,分别用于set和map。二、代码解析类定义:是个抽象类public abstract class Enum<E extends Enum<E>> implemen...原创 2019-12-20 17:30:20 · 1153 阅读 · 0 评论 -
JDK源码(11)-Long、Short
一、概述类定义:public final class Long extends Number implements Comparable<Long> 是对基本数据类型long的包装。二、主要属性三、主要方法及其源码1.toString相关的public static String toString(long i, int radix) public...原创 2019-12-16 14:49:12 · 1104 阅读 · 0 评论 -
JDK源码(10)-Integer(用处最多,重点讲解)
一、概述Integer是对基本数据类型int的一个包装,类定义如下:public final class Integer extends Number implements Comparable<Integer> 通过属性MAX_VALUE和MIN_VALUE定义了范围是:-2^31到2^31 -1.。二、主要方法1.toString(int i, int rad...原创 2019-12-16 14:28:57 · 1282 阅读 · 0 评论 -
JDK源码(9)-Double、Float
一、概述这个千篇一律,Double是对基本数据类型double的包装,里面包含了double类型的字段。这个类也提供了一些将String和double转换为Double的方法,还有一些处理double的方法。作者是: * @author Lee Boynton * @author Arthur van Hoff * @author Joseph D. Darcy * @s...原创 2019-12-16 10:42:34 · 1172 阅读 · 0 评论 -
JDK源码(8)-Byte
一、抽象类Number类继承关系这里面的原子类、BigDecimal后面都会详细介绍。属性和抽象方法二、概述所有的属性,最小-128,最大127,SIZE和BYTES代码比特值的二进制补码长度。一个静态内部类做缓存 private static class ByteCache { private ByteCache(){} ...原创 2019-12-13 15:37:27 · 1126 阅读 · 0 评论 -
JDK源码(7)-Boolean
一、概述这个类依然是Arthur van Hoff这哥们写的,是对基本数据类型boolean的一个包装,源码的注释说的很清楚:An object of type Boolean contains a single field whose type is boolean.这个类中有个属性的类型是基本类型boolean这个类为boolean提供了很多boolean和String互相转换的...原创 2019-12-13 11:04:43 · 896 阅读 · 0 评论 -
JDK源码系列(6)-StringBuilder
一、概述StringBuilder是一个可变的字符串序列,这个类被设计去兼容StringBuffer类的API,但不保证线程安全性,是StringBuffer单线程情况下的一个替代实现。在可能的情况 ,建议,在代码中优先使用,因为它的实现更快。二、常见方法主要的方法是append和insert方法,有很多重载,以便接受任何类型的数据。一个是从尾部追加,一个是从任意位置插入。一样的,...原创 2019-12-11 22:56:37 · 905 阅读 · 0 评论 -
JDK源码系列(5)-StringBuffer
一、概述StringBuffer是一个线程安全的、可变的字符序列,跟String类似,但它能被修改。StringBuffer在多线程环境下可以很安全地被使用,因为它的方法都是通过synchronized关键字来修饰的。这样能保证任何操作都会以串行的方式执行。二、常用方法StringBuffer的主要操作是对字符串的追加和插入,追加是在字符串的尾部添加,而insert方法可以在指定位置添...原创 2019-12-11 22:20:17 · 907 阅读 · 0 评论 -
JKD源码系列(4)-AbstractStringBuilder
一、AbstractStringBuilder简介AbstractStringBuilder是StringBuffer和StringBuilder的抽象父类,它的类定义如下:abstract class AbstractStringBuilder implements Appendable, CharSequence 三个属性:char[] value;int count;...原创 2019-12-10 23:37:29 · 1081 阅读 · 0 评论 -
JDK源码系列(3)-String
在JDK中,String的使用频率和被研究的程度都非常高,所以接下来我只说一些比较重要的内容。一、String类的概述String类的声明如下:public final class String implements java.io.Serializable, Comparable<String>, CharSequence类被final修饰,所以String...原创 2019-12-10 22:42:01 · 810 阅读 · 0 评论 -
JDK源码(1)-阅读指引
说在最前面的话:其实JDK源码的阅读,网上资料特别多,我阅读的最主要目的是自己学习,所以我读的可能不那么好,我的角度是从源码和源码对应的注释读起,顺便还能练练英语。接下来准备对JDK的常见源码进行一下阅读,特整理一个学习指南出来供大家参考:一、准备工作以JDK1.8版本进行阅读。我下载的是比较新的jdk8u版本。源码下载地址:http://hg.openjdk.java.net...原创 2019-12-08 23:29:39 · 1696 阅读 · 0 评论 -
JDK源码系列(2)-Object类
引言我们都知道,在Java中,Object是所有类的超类,所有的类其实都是隐含继承自Object类的,所以extends Object默认是不用写的,当然你写了也不会错。所有的类都可以使用Object类中的方法,下面我们按源码的顺序分别来介绍。Object类中的常用方法有:toString(),getClass(),hashCode(),equals(),clone(),finalize(...原创 2019-12-08 23:11:44 · 775 阅读 · 0 评论