java
java相关
平静游离的鲸
向日葵告诉我,只要面对着阳光努力生长,日子就会变得单纯而美好
展开
-
关于java中类的加载机制
类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,那么会占用很多的内存。类的生命周期包括以下 7 个阶段:加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)类加载过程包含了加载、验证、准备、解析和初始化这 5 个阶段1. 加载加载是类加载的一个阶段,注意不要混淆。加载过程完成以下三件事:通过类的完原创 2020-08-05 17:14:31 · 234 阅读 · 0 评论 -
HashMap JDK1.7实现原理
深入浅出学Java——HashMap哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中HashMap的实现原理进行讲解,并对JDK7的HashMap源码进行分析。一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,转载 2020-07-21 15:37:40 · 323 阅读 · 0 评论 -
HashMap JDK1.8实现原理
HashMap概述HashMap存储的是key-value的键值对,允许key为null,也允许value为null。HashMap内部为数组+链表的结构,会根据key的hashCode值来确定数组的索引(确认放在哪个桶里),如果遇到索引相同的key,桶的大小是2,如果一个key的hashCode是7,一个key的hashCode是3,那么他们就会被分到一个桶中(hash冲突),如果发生hash冲突,HashMap会将同一个桶中的数据以链表的形式存储,但是如果发生hash冲突的概率比较高,就会导致同一个桶转载 2020-07-21 15:14:36 · 167 阅读 · 0 评论 -
关于ArrayList的扩容机制
一.浅析 ArrayList 的构造函数ArrayList有三种方式来初始化,构造方法源码如下:/** * 默认初始容量大小 */ private static final int DEFAULT_CAPACITY = 10; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; /** *默认构造函数,使用初始容量10构造一个空列表(无参数构造)原创 2020-07-20 15:57:50 · 733 阅读 · 0 评论