Java常用类的源码剖析
文章平均质量分 89
洒水水儿
码不停题
展开
-
Java HashSet源码剖析
与HashMap类似,字面上看,HashSet由两个单词组成:Hash和Set。其中,Set表示接口,实现Set接口也有多种方式,各有特点,HashSet实现的方式利用了Hash。下面,我们先看Set接口,然后看实现原理,最后总结分析HashSet的特点。原创 2024-02-21 21:37:45 · 934 阅读 · 0 评论 -
Java HashMap源码剖析
字面上看,HashMap由Hash和Map两个单词组成,Map表示映射关系,是一个接口,实现Map接口有多种方式,HashMap实现的方式利用了Hash。本文先分析Map接口,接着分析HashMap实现原理,最后总结分析HashMap的特点。原创 2024-02-21 01:33:30 · 1476 阅读 · 0 评论 -
Java ArrayDeque源码剖析
LinkedList实现了队列接口Queue和双端队列接口Deque,Java容器类中还有一个双端队列的实现类ArrayDeque,它是基于数组实现的。我们知道,一般而言,由于需要移动元素,数组的插入和删除效率比较低,但ArrayDeque的效率却非常高,它是怎么实现的呢?本文就来详细探讨。原创 2024-02-19 00:49:35 · 1069 阅读 · 0 评论 -
Java LinkedList源码剖析
ArrayList随机访问效率很高,但插入和删除性能比较低;LinkedList同样实现了List接口,它的特点与ArrayList几乎正好相反。除了实现了List接口外,LinkedList还实现了Deque和Queue接口,可以按照队列、栈和双端队列的方式进行操作。本节会介绍这些用法,同时介绍其实现原理。原创 2024-02-19 00:23:07 · 1521 阅读 · 0 评论 -
Java ArrayList源码剖析
当涉及到存储和操作数据时,是Java中最常用的集合类之一。本文会介绍它的基本用法、迭代操作、实现的一些接口,最后分析它的特点。原创 2024-02-18 23:18:34 · 688 阅读 · 0 评论 -
Java Collections源码剖析
Collections以静态方法的方式提供了很多通用算法和功能,这些功能大概可以分为以下两类。一类是对容器接口对象进行操作,包括查找、排序、添加和修改。另一类返回一个容器接口对象,适配器:将其他类型的数据转换为容器接口对象+装饰器:修饰一个给定容器接口对象,增加某种性质。原创 2024-02-18 21:14:45 · 669 阅读 · 0 评论 -
Java 抽象容器类源码剖析
c)> c)> c)代码抛出“操作不支持”异常,如果子类集合是不可被修改的,这个默认实现就可以了,否则,必须重写add方法。addAll方法的实现就是循环调用add方法。size方法是抽象方法,子类必须重写。isEmpty方法就是检查size方法的返回值是否为0。toArray方法依赖size方法的返回值分配数组大小。iterator方法也是抽象方法,它返回一个实现了迭代器接口的对象,子类必须重写。迭代器E next();原创 2024-02-17 23:59:12 · 1090 阅读 · 0 评论 -
Java Random源码剖析
伪随机数都是基于一个种子数的,然后每需要一个随机数,都是对当前种子进行一些数学运算,得到一个数,基于这个数得到需要的随机数和新的种子。数学运算是固定的,所以种子确定后,产生的随机数序列就是确定的,确定的数字序列当然不是真正的随机数,但种子不同,序列就不同,每个序列中数字的分布也都是比较随机和均匀的,所以称之为伪随机数。Java中,对随机最基本的支持是Math类中的静态方法random(),它生成一个0~1的随机数,类型为double,包括0但不包括1。而在默认构造方法中,种子是一个真正的随机数。原创 2024-02-17 23:16:41 · 432 阅读 · 0 评论 -
Java Arrays源码剖析
Java中有一个类Arrays,包含一些对数组操作的静态方法,本文主要就来讨论这些方法以避免重新造轮子,在需要的时候自己实现它不具备的功能。原创 2024-02-16 22:06:02 · 945 阅读 · 0 评论 -
Java StringBuilder源码剖析+面试题整理
在String中提到,如果字符串修改操作比较频繁,应该采用StringBuilder和StringBuffer类,这两个类的方法基本是完全一样的,它们的实现代码也几乎一样,唯一的不同就在于StringBuffer类是线程安全的,而StringBuilder类不是。原创 2024-02-12 23:59:29 · 1760 阅读 · 0 评论 -
Java String源码剖析+面试题整理
由于字符串操作是计算机程序中最常见的操作之一,在面试中也是经常出现。本文从基本用法出发逐步深入剖析String的结构和性质,并结合面试题来帮助理解。原创 2024-02-11 22:00:49 · 1325 阅读 · 0 评论 -
Java Character源码剖析
Character类除了封装了一个char外,还封装了Unicode字符级别的各种操作,是Java文本处理的基础。下面结合源码分析Character的贡献。原创 2024-02-06 22:44:16 · 1223 阅读 · 0 评论 -
Java Integer源码剖析
下面展示了Integer对象缓存机制的基本原理。Java为了提高性能和减少内存使用,在-128到127(包含)这个范围内的整数值上实现了缓存。当调用时,如果这个整数处于缓存范围内,那么就会从缓存中返回相应的Integer实例。IntegerCache是一个私有静态内部类,代码如下IntegerInteger静态初始化方法块中设置默认的缓存上限为127,然后通过尝试读取系统属性的值,这个值允许用户自定义缓存的上限。如果这个属性被设置了,并且其值大于127,则更新缓存的上限值。原创 2024-02-05 18:58:40 · 1174 阅读 · 0 评论 -
Java 基本数据类型包装类源码剖析
因为new每次都会创建一个新对象,而除了Float和Double外的其他包装类,都会缓存包装类对象,减少需要创建对象的次数,节省空间,提升性能。hashCode返回一个对象的哈希值。equals用于判断当前对象和参数传入的对象是否相同,Object类的默认实现是比较地址,对于两个变量,只有这两个变量指向同一个对象时,equals才返回true,它和比较运算符(==)的结果是一样的。包装类内部有一个实例变量,保存对应的基本类型的值,这个类一般还有一些静态方法、静态变量和实例方法,以方便对数据进行操作。原创 2024-02-04 20:22:21 · 609 阅读 · 0 评论