字节码文件解析
字节码文件解析1、在C盘根目录定义一个带包java类(jdk8)12345public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello world"); }} 2、编译文件1javac HelloWorld.java 得到字节码文件 3、使用sublime打开class文件1234567891011121314151617181920212223242526cafe babe 0000 0034 001c 0a00 0600 0f090010 0011 0800 120a 0013 0014 0700 12070015 0100 063c 696e 6974 3e01 0003 28295601 0004 436f 6465 0100 0f4c 696e 654e756d 6265 7254 6162 6c65 0100 046d 61696e01 0016 285b 4c6a 6176...
数组
数组前言数据结构分类 数据结构中数据按逻辑结构分为:线性结构、非线性结构 常用的线性结构有:线性表(顺序存储、链式存储)、栈、队列、双端队列、串(一维数组); 常见的非线性结构有:二维数组、多维数组、矩阵、散列表、树、堆、图。 线性结构的特征 集合中必存在唯一的一个”第一个元素”; 集合中必存在唯一的一个”最后的元素”; 除最后元素之外,其它数据元素均有唯一的”后继”; 除第一元素之外,其它数据元素均有唯一的”前驱”。 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 如(a0,a1,a2,…..,an),a0为第一个元素,an为最后一个元素,此集合为一个线性结构的集合。 非线性结构,其逻辑特征是一个节点元素可能有多个直接前驱和多个直接后继。 线性数据结构存储方式 顺序存储结构:顺序表 链式存储结构:链表 常用线性数据结构 常用的线性结构有:线性表(顺序存储、链式存储)、栈、队列、双端队列、串(一维数组)。 线性表(Linear...
数组的查找
数组的查找线性查找概念 线性查找也叫顺序查找,这是最基本的一种查找方法,从给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。 元素序列的排列可以有序,也可以无序。 代码实现12345678910111213141516171819202122232425262728293031323334353637383940public class Test01 { public static void main(String[] args) { //线性查找 int[] arr = {45, 62, 15,62, 78, 30}; int index = sequentialSearch01(arr, 62); System.out.println("指定元素首次出现的下标位置:" + index); List<Integer> indexList = sequentialSearch02(arr,...
数据的排序
数组的排序前言排序概念 排序是将一组数据,依据指定的顺序进行排列的过程。 排序是算法中的一部分,也叫排序算法。算法处理数据,而数据的处理最好是要找到他们的规律,这个规律中有很大一部分就是要进行排序,所以需要有排序算法。 常见的排序算法分类 排序分为:内部排序和外部排序。 内部排序:是将需要处理的所有数据加载到内存中进行排序; 外部排序:当数据量过大,无法全部加载到内存中,需要借助外部存储(文件、磁盘等)进行排序。 交换排序(冒泡排序、快速排序) 选择排序(选择排序、堆排序) 插入排序(插入排序、希尔排序) 归并排序 桶排序、 计数排序、基数排序 算法稳定性 ...
回顾
标识符 含义:给类、变量、方法、接口取名字的时候使用到的字符序列 组成:大小写字母...
面向对象
面向对象概念 现实生活: 类:抽象的概念,把具有相同特征和操作的事物归为一类 先有实体,再有类的概念 代码世界: 类:抽象的概念,把具有相同属性和方法的对象归为一类 编写顺序:先有类,再创建对象 类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象 类 类中只有属性和方法 属性也叫做全局变量,属性分为成员变量和静态变量 方法分为成员方法和静态方法 1234567891011121314151617public class 类名{ //属性也叫做全局变量,分为成员变量和静态变量 //成员变量 数据类型 变量名; //静态变量 static 数据类型 变量名; //方法分为成员方法和静态方法 //成员方法 访问修饰符 返回值类型 方法名([参数]){} //静态方法 访问修饰符 static 返回值类型 方法名([参数]){}} 对象 创建对象的语法:类名 对象名 = new...
深入类加载机制
深入类加载机制初识类加载过程使用某个类时,如果该类的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[]...
集合
集合含义 集合是Java API所提供的一系列类,可以用于动态存放多个对象...
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>{ //默认容量 ...