
Java
nsn_huang
本科 计算机科学与技术 2017级
展开
-
[集合类] 源码解析10(HashMap类)
上一篇:[集合类] 源码解析9(Map接口和AbstractMap抽象类)1. 概述我们首先看一下HashMap定义,它继承了AbstractMap抽象类,实现了Map、Cloneable、Serializable接口。public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,...原创 2019-12-15 14:48:52 · 229 阅读 · 0 评论 -
[集合类] 源码解析9(Map接口和AbstractMap抽象类)
上一篇:[集合类] 源码解析8(PriorityQueue类)文章目录1. Map接口1) Entry接口2) 方法2. AbstractMap抽象类1) SimpleEntry2) SimpleImmutableEntry3) 方法实现1. Map接口我们首先看一下Map接口的定义,按照惯例,翻译一下注释。/** * Map是一个将key(键)映射到value(值)的对象。Map不能包...原创 2019-12-13 14:16:23 · 324 阅读 · 0 评论 -
[集合类] 源码解析8(PriorityQueue类)
[集合类]源码解析7(AbstractSequentialList抽象类和LinkedList类)文章目录1. 属性2. 构造方法3. 重要方法4. 常用方法1) 工具方法2) 集合方法3)队列方法public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializa...原创 2019-12-11 16:10:47 · 290 阅读 · 0 评论 -
[集合类]源码解析7(AbstractSequentialList抽象类和LinkedList类)
上一篇:[集合类]源码解析6(Queue接口、AbstractQueue抽象类、Deque接口)文章目录1. AbstractSequentialList2. LinkedList1) Node2) 属性3) 构造方法4) 工具方法5) List方法(1) 添加方法(2) 删除方法(3) 修改方法(4) 查找方法6) Deque方法(1) 添加方法(2) 删除方法(3) 查找方法1. Abst...原创 2019-12-10 20:26:07 · 212 阅读 · 0 评论 -
[集合类]源码解析6(Queue接口、AbstractQueue抽象类、Deque接口)
上一篇:[集合类]源码解析5(ArrayList类、Vector类和Stack类)文章目录1. Queue接口2. AbstractQueue 抽象类3. Deque 接口1. Queue接口Queue接口主要定义了队列的基本方法,下面我们分析注释,了解其实现、使用规则。/** * 设计用于在处理之前保留元素的集合。 除了基本的Collection操作之外,队列还提供额外的插入,提取和检...原创 2019-12-08 22:56:15 · 262 阅读 · 0 评论 -
[集合类]源码解析5(ArrayList类、Vector类和Stack类)
上一篇:[集合类]源码解析4(List接口和AbstractList抽象类)文章目录1. 概述2. ArrayList1)属性2)构造方法3)常用方法(1)添加方法(2)删除方法(3)修改方法(4)查询方法(5)关键方法(6)其他方法4)System.arraycopy3. Vector4. Stack1. 概述前面我们按照接口为线索,分析了和集合类相关的一些接口以及他们的实现类,下面我们将...原创 2019-12-05 14:17:13 · 416 阅读 · 1 评论 -
[集合类]源码解析4(List接口和AbstractList抽象类)
上一篇:[集合类]源码解析3(Collection接口和AbstractCollection抽象类)1. 概述下面我们一起看一下List接口的定义,以及AbstractList的实现。2. List接口List接口继承了Collection接口,Collection接口中的定义就不重复了,还不了解的给个传送门:[集合类]源码解析3(Collection接口和AbstractCollecti...原创 2019-12-04 16:05:41 · 257 阅读 · 0 评论 -
[集合类]源码解析3(Collection接口和AbstractCollection抽象类)
1. 概述我们首先看一下Collection接口的javadoc,之后看一下在AbstractCollection中的实现。2. Collection接口下面是Collection中定义的接口列表,其中equals和hashCode是继承自Object,iterator方法是继承自Iterable,我们已经分析过,传送门:[集合类] 源码解析2(Iterator的实现)下面是Collec...原创 2019-12-04 11:14:56 · 286 阅读 · 0 评论 -
[集合类] 源码解析2(Iterator的实现)
Iterator源码分析上一篇[集合类] 源码解析1(Iterable、RandomAccess、Serializable、Cloneable分析都写在代码注释中了,希望大家耐心读。1. 整体接上一篇文章,这一篇我们来详细分析一下Iterator接口,以及常见的实现。下面是常用类的类图,没有Set是因为Set是一种特殊的Map,这个后面再说。下面是接口定义,定义了迭代器的基本操作。p...原创 2019-11-29 16:39:56 · 642 阅读 · 4 评论 -
[集合类] 源码解析1(Iterable、RandomAccess、Serializable、Cloneable)
集合类是我们每天都在使用的工具。工欲善其事,必先利其器。下面我们从源码的角度来看看集合类中的奥秘。1. 整体下面图片是整体的架构,这里只表现了类和接口类的继承实现关系,选取了平时使用比较多的类,如LinkedList、ArrayList、HashMap、TreeMap等,没有考虑并发容器。集合类分为两个体系,Collection和Map。我们先看Collection。1)Collection...原创 2019-11-26 22:31:44 · 460 阅读 · 1 评论 -
[java]语法糖?甜么?
1. 什么是语法糖语法糖是指为了方便程序员使用的一种语法结构,在编译期间会被转换为基础的语法结构。其实我们每天都在和语法糖打交道,只是我们自己不了解。下面我们看看在Java中都有哪些语法糖。2. Java中的语法糖1)switch支持String在switch中比较的是String的hashcode。class SwitchDemo { public static void ma...原创 2019-11-25 15:34:49 · 273 阅读 · 0 评论 -
[java] Java基础
1. 基础特性1) 面向对象面向对象是一种编程思想,是使用类或对象作为组织代码的基本单元,具有继承、封装、多态三大特性。继承用来表示类之间的关系,主要作用就是实现代码复用。封装就是控制类的访问权限,只开放出对外的方法,并抽象出接口类,供使用者操作。一方面,让数据更安全,另一方面,也提高了易用性。多态简单说就是子类替换父类,或者实现类代替接口类。多态提高了代码的可拓展性和复用性,一方面,在...原创 2019-11-24 19:49:27 · 362 阅读 · 1 评论 -
[java] String探秘
String类由于我们每天都在和String打交道,他已经重要的让我们无法感知它的存在,正因如此,他的性能问题也最容易被忽视。下面让我们从源码的角度来看看,String类有哪些奥秘。(以下代码使用jdk1.8)1. 存储结构首先可以看到,String存储结构是char数组。private final char value[];2. 不可变可以看到,String类本身以及其属性都是fi...原创 2019-11-24 13:56:17 · 397 阅读 · 1 评论 -
Java实现线程安全的单例模式 -- 5种方法的演进
前言:单例模式是一种对象创建模式,确保系统中一个类只产生一个实例。本质上和池化技术的目的是一样的。对于频繁使用的对象,可以省略创建和销毁的开销,尤其对于重量级对象而言。其中重要的问题就是是否支持延迟加载,以及延迟加载带来的线程安全问题。饿汉由于instance是静态的,也就是类变量,所以会在类加载的初始化阶段就会生成实例。由于类加载一定是只执行一次的,当然他是线程安全的。具体可以看另一...原创 2019-10-26 14:45:23 · 193 阅读 · 0 评论 -
获取系统变量System.getProperty() && jinfo工具
今天用到了,System.getProperty(“user.dir”);想看一下都有哪些系统属性,如是有了下面的测试代码。class Test { public static void main(String[] args) { Properties properties = System.getProperties(); for (String ke...原创 2019-10-12 22:17:46 · 228 阅读 · 0 评论 -
Java BIO 流
Java BIO是面向流的IO,所有的操作都是基于流的。对于字节和字符,有对应的字节流和字符流。也有对字节和字符进行转换的转换流,还有提升效率的缓冲流。对于流的方向,还有输入流和输出流。1. 字节流和字符流1.1 字节和字符简单的说,字节是给计算机看的,字符是给人看的。字节(Byte)是表示计算机存储容量的计量单位。而字符是字节经过编码之后,便于人理解的一种符号。比如我们常用的编码规则(...原创 2019-09-21 11:38:46 · 348 阅读 · 0 评论