深入类加载机制
深入类加载机制初识类加载过程使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化 1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(Initialize) 类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class的对象,此过程由类加载器(ClassLoader )完成 类的连接(Link):将类中的数据加载到各个内存区域中 类的初始化(Initialize):JVM负责对类进行初始化 深入类加载过程类的完整生命周期 :加载、连接(验证、准备、解析)、初始化、使用、卸载 加载 通过一个类的全限定名来获取其定义的二进制字节流 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构 在堆中生成一个代表这个类的Class对象,作为方法区中这些数据的访问入口 注意: 相对于类加载过程的其他阶段而言,加载阶段是可控性最强的阶段,因为程序员可以使用系统的类加载器加载,还可以使用自己的类加载器加载,在这里我们只需要知道类加载器的作用就是上面虚拟机需要完成的三件...
Iterator底层源码
123456public abstract class AbstractList<E>{ //外部操作数 //添加元素、删除元素时会++,因为添加、删除会导致集合中的元素个数发生改变 protected transient int modCount = 0;//4} 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103public class ArrayList<E> extends AbstractList<E> implements List<E>{ //数据容器 transient Object[] ele...
集合
集合含义 集合是Java API所提供的一系列类,可以用于动态存放多个对象 (集合只能存对象) 集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类) 集合类全部支持泛型,是一种数据安全的用法。 集合与数组的不同 数组:一旦初始化后长度不可变,元素类型受限定(String类型的数组只能装String的数据),数组可以存储基本数据类型 集合:长度可变的序列,元素类型不受限定(一个集合可以存储多个数据类型的元素),集合只能存储引用数据类型 Collection家族List接口 特点:有序且可重复(因为List接口中添加了许多针对下标操作的方法) 实现类: ArrayList LinkedList Vector Stack Set接口 特点:无序且不可重复 实现类: HashSet LinkedHashSet TreeSet Map家族 实现类: HashMap LinkedHashMap Hashtable ConcurrentHashMap TreeMap Propert...
ArrayList底层源码
12345public abstract class AbstractList<E> extends AbstractCollection<E>implements List<E>{ //外部操作数:记录了数据量变化的次数 //对于数据的更新(添加、删除、清空),modCount就会++ protected transient int modCount = 0;// 2} 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485public class ArrayList<E> extends AbstractList<E> implements List<E>{ //默认容量 priv...
LinkList底层源码
123456public abstract class AbstractList<E> extendsAbstractCollection<E>implements List<E> { //外部操作数 protected transient int modCount = 0;//0}public abstract class AbstractSequentialList<E> extends AbstractList<E> {} 12345678910111213141516171819202122232425262728293031323334353637383940414243public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>{ //元素个数 transient int size = 0;//0 //第一个...
TreeSet底层源码
123456789101112131415161718192021222324252627public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>{ //外置比较器 private final Comparator<? super K> comparator; public TreeMap() { comparator = null; } public TreeMap(Comparator<? super K> comparator) { this.comparator = comparator; } //key - new Student("麻生希", '女', 25, "2301", "001")...
Stack底层源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748public class Vector<E> extends AbstractList<E> implements List<E>{ protected Object[] elementData;//new Object[10]{"杨勇1","杨勇2","杨勇3".....} protected int elementCount;//3 public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = obj; ...
Vector底层源码
12345public abstract class AbstractList<E> extends AbstractCollection<E>implementsList<E> { //外部操作数 //涉及到元素个数变化(添加、删除、清空)时,外部操作数就会++ protected transient int modCount = 0;//3} 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758public class Vector<E> extends AbstractList<E> implements List<E>{ //数据容器 protected Object[] elementData;//new Object[10]{"麻生希","椎名空&q...
TreeMap底层源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>{ //外置比较器 private final Comparator<? super K> comparator; //根节点 private transient Entry<K,V> root;//null //元素个数 private transient int size = 0;...
枚举
枚举引入 编写季节类(Season),该类只有四个对象(spring,summer,autumn,winter) 概念 枚举(enum)全称为 enumeration, 是 JDK 1.5 中引入的新特性。 语法1234public enum Color{ //默认添加 public static final RED,GREEN,BLUE;} 本质 尽管枚举看起来像是一种新的数据类型,实际上,枚举就是一种受限制的类,并且具有自己的方法。创建自己的enum类时,这个类继承自 java.lang.Enum。 123 public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable{ ...} 特点 枚举就是一个受限制的类,默认继承Enum 枚举的第一行必须定义该枚举类型的对象 枚举类型对象默认添加: public static final 类型 枚举没有继承明确类(自定...










