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 · 204 阅读 · 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 · 281 阅读 · 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 · 239 阅读 · 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 · 183 阅读 · 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 · 227 阅读 · 0 评论 -
[集合类]源码解析5(ArrayList类、Vector类和Stack类)
上一篇:[集合类]源码解析4(List接口和AbstractList抽象类) 文章目录1. 概述2. ArrayList1)属性2)构造方法3)常用方法(1)添加方法(2)删除方法(3)修改方法(4)查询方法(5)关键方法(6)其他方法4)System.arraycopy3. Vector4. Stack 1. 概述 前面我们按照接口为线索,分析了和集合类相关的一些接口以及他们的实现类,下面我们将...原创 2019-12-05 14:17:13 · 401 阅读 · 1 评论 -
[集合类]源码解析4(List接口和AbstractList抽象类)
上一篇:[集合类]源码解析3(Collection接口和AbstractCollection抽象类) 1. 概述 下面我们一起看一下List接口的定义,以及AbstractList的实现。 2. List接口 List接口继承了Collection接口,Collection接口中的定义就不重复了,还不了解的给个传送门:[集合类]源码解析3(Collection接口和AbstractCollecti...原创 2019-12-04 16:05:41 · 230 阅读 · 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 · 267 阅读 · 0 评论 -
[集合类] 源码解析2(Iterator的实现)
Iterator源码分析 上一篇[集合类] 源码解析1(Iterable、RandomAccess、Serializable、Cloneable 分析都写在代码注释中了,希望大家耐心读。 1. 整体 接上一篇文章,这一篇我们来详细分析一下Iterator接口,以及常见的实现。下面是常用类的类图,没有Set是因为Set是一种特殊的Map,这个后面再说。 下面是接口定义,定义了迭代器的基本操作。 p...原创 2019-11-29 16:39:56 · 617 阅读 · 4 评论 -
[集合类] 源码解析1(Iterable、RandomAccess、Serializable、Cloneable)
集合类是我们每天都在使用的工具。工欲善其事,必先利其器。下面我们从源码的角度来看看集合类中的奥秘。 1. 整体 下面图片是整体的架构,这里只表现了类和接口类的继承实现关系,选取了平时使用比较多的类,如LinkedList、ArrayList、HashMap、TreeMap等,没有考虑并发容器。集合类分为两个体系,Collection和Map。我们先看Collection。 1)Collection...原创 2019-11-26 22:31:44 · 425 阅读 · 1 评论 -
[java]语法糖?甜么?
1. 什么是语法糖 语法糖是指为了方便程序员使用的一种语法结构,在编译期间会被转换为基础的语法结构。其实我们每天都在和语法糖打交道,只是我们自己不了解。下面我们看看在Java中都有哪些语法糖。 2. Java中的语法糖 1)switch支持String 在switch中比较的是String的hashcode。 class SwitchDemo { public static void ma...原创 2019-11-25 15:34:49 · 255 阅读 · 0 评论 -
[java] Java基础
1. 基础特性 1) 面向对象 面向对象是一种编程思想,是使用类或对象作为组织代码的基本单元,具有继承、封装、多态三大特性。 继承用来表示类之间的关系,主要作用就是实现代码复用。 封装就是控制类的访问权限,只开放出对外的方法,并抽象出接口类,供使用者操作。一方面,让数据更安全,另一方面,也提高了易用性。 多态简单说就是子类替换父类,或者实现类代替接口类。多态提高了代码的可拓展性和复用性,一方面,在...原创 2019-11-24 19:49:27 · 343 阅读 · 1 评论 -
[java] String探秘
String类 由于我们每天都在和String打交道,他已经重要的让我们无法感知它的存在,正因如此,他的性能问题也最容易被忽视。下面让我们从源码的角度来看看,String类有哪些奥秘。(以下代码使用jdk1.8) 1. 存储结构 首先可以看到,String存储结构是char数组。 private final char value[]; 2. 不可变 可以看到,String类本身以及其属性都是fi...原创 2019-11-24 13:56:17 · 380 阅读 · 1 评论 -
Java实现线程安全的单例模式 -- 5种方法的演进
前言: 单例模式是一种对象创建模式,确保系统中一个类只产生一个实例。本质上和池化技术的目的是一样的。 对于频繁使用的对象,可以省略创建和销毁的开销,尤其对于重量级对象而言。 其中重要的问题就是是否支持延迟加载,以及延迟加载带来的线程安全问题。 饿汉 由于instance是静态的,也就是类变量,所以会在类加载的初始化阶段就会生成实例。由于类加载一定是只执行一次的,当然他是线程安全的。具体可以看另一...原创 2019-10-26 14:45:23 · 174 阅读 · 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 · 202 阅读 · 0 评论 -
Java BIO 流
Java BIO是面向流的IO,所有的操作都是基于流的。对于字节和字符,有对应的字节流和字符流。也有对字节和字符进行转换的转换流,还有提升效率的缓冲流。对于流的方向,还有输入流和输出流。 1. 字节流和字符流 1.1 字节和字符 简单的说,字节是给计算机看的,字符是给人看的。字节(Byte)是表示计算机存储容量的计量单位。而字符是字节经过编码之后,便于人理解的一种符号。比如我们常用的编码规则(...原创 2019-09-21 11:38:46 · 314 阅读 · 0 评论