自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_37232304的博客

这的水很深

  • 博客(23)
  • 收藏
  • 关注

原创 java中的类加载器

类从被加载到内存中开始,到卸载出内存为止。它的生命周期总共七个阶段: 加载—->验证—->准备—->解析—->初始化—->使用—->卸载。要加载一个类,我们首先必须要找到他的.class文件,那么我们怎么区分.class文件? SUN公司规定了每个class文件都必须以0xCAFEBABE为标志开头。 这个标志被称为魔数。当我们找到所需要的.cla...

2018-05-27 02:04:16 180

原创 String、StringBuffer与StringBuilder与java中的反射

StringString str1="hello" str1=str1+"world";//额外生成新的对象 System.out.println(str1);汇编上述代码 通过汇编可以看出 可以看出JVM先是把str1转换为StringBuilder对象,然后调用了StringBuilder中的append方法进行对str1进行修改,然后指向新的str1,最后在使用Str...

2018-05-27 00:11:15 506

原创 java抽象类,密封类与接口

抽象类 抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字ab...

2018-05-24 23:27:28 392

原创 接口练习作业

作业要求 模拟银行存取款 1、 创建基接口BankAccount,包含 存款方法playIn(), 取款方法withdraw(), 查询余额方法getBalance()。 2、 创建接口ITransferBankAccount(继承基接口BankAccount) 包含转账方法transferTo(). 3,创建类CurrentAccount ...

2018-05-24 23:17:55 676

原创 继承与多态

继承继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 在Java之中,如果要实现继承的关系,可以使用如下的语法:class 子类 extends 父类 {}子类又被称为派生类; 父类又被称为超类(Super Class)。继承的实现class Base{//基类 public int ma...

2018-05-23 13:59:06 122

原创 归并排序

将两个的有序数列合并成一个有序数列,我们称之为”归并”。归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为止。这样就得到了我们想要的排序结果。 /*俩俩归并子序列*/public static void merge(int []a...

2018-05-20 17:41:51 135

原创 堆排序

堆是一种重要的数据结构,为一棵完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1),如果它有左子树,那么左子树的位置是2i+1,如果有右子树,右子树的位置是2i+2。 堆排序最重要的是构建大顶堆,然后让大顶堆的0号元素(整个堆的最大元素)与最后一个元素交换,然后通过不断调整大顶堆,不断交换,直到数组有序。堆排序步骤: 1,构建大顶堆。(从...

2018-05-18 14:24:45 159

原创 快速排序的几种优化方式

快速排序的几种优化方式1,随机选取基准的方法: /*进行第一趟快速排序 * */ public static int partion(int[] array,int low,int high){ int tmp = array[low]; while(low<high){ while(low <...

2018-05-18 01:37:51 239

原创 快速排序

快速排序思想 1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; 3.对左右两个分区重复以上步骤直到所有元素都是有序的。快速排序的稳定性:不稳定 时间复杂度: 数组无序 最好情况 O(nlog2n) 数组有序...

2018-05-16 12:01:11 235

原创 shell排序

Shell排序可以理解为插入排序的变种,它充分利用了插入排序的特点:数据越有序效率越高。Shell排序的特点是,按一定的步长(为了保证效率,步长一般取5,3,1)抽取序列中的子元素,构成子序列,然后对子序列进行插入排序,如此循环直到步长为1,此时整个序列作为整体进行插入排序,由于之前的步骤已经保证子序列的有序性,故而,最后的插入排序时间复杂度很小。public static void sh...

2018-05-15 20:55:17 1392

原创 BF算法与KMP算法

BF算法思想: 代码实现:public class BF { public static int bf(String str,String sub){ if(sub.length()>str.length()){//如果sub长度比str大,则直接返回-1 return -1; } int i=...

2018-05-13 02:36:57 249

原创 俩个队列实现一个栈

首先定义一个队列的类class queuelink{ int []elem; int front;//队头 int rear;//队尾 int usesize=0;//当前循环队列的有效数据个数 int allsize=10;// public queuelink(){ this(10); } public ...

2018-05-11 12:29:30 222

原创 优先级队列

优先级队列是指按照数据优先级进行存储的队列。class priolink{ Entry head; public priolink(){ this.head=new Entry(); } class Entry{ int data; int prio;//data优先级 Entry next;...

2018-05-11 12:14:47 357

原创 链式队列

链式队列是单链表的基础上增加的一种做法/** * 链式队列 *单链表的基础上增加的一种做法 *入队使用为尾插法 * */class linkstack{//定义一个链式栈的类 Entry front=null;//指向第一个结点 Entry rear=null;//指向最后一个结点 int usesize=0; public links...

2018-05-11 12:10:18 151

原创 两个栈实现队列

代码实现/**俩个栈实现一个队列**/class twolink{ testlink1 t1=new testlink1(); testlink1 t2=new testlink1(); int top=0;//t1.elem的top int top1=0;//t2.elem的top class testlink1{ int []elem...

2018-05-08 20:59:58 132

原创 数据结构之循环队列

循环队列: 为充分利用向量空间,克服”假溢出”现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。 循环队列结构 判读循环队列为满或者为空的方法 1、当head=rear的时候,队列为空 2、当head=rear+1的时候,队列为满/** * 循环队列,先进先出 * * * */...

2018-05-08 19:55:33 243

原创 中缀表达式转后缀表达式

中缀表达式, 是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法后缀表达式(逆波兰式),指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行.中缀表达式转后缀表达式选择题做法:代码实现:/** * 中缀表达式转换为后缀表达式 * * * 规则: *...

2018-05-08 19:16:52 222

原创 数据结构之链式栈

代码实现/** * 链式栈 * * * */class linkstack{//定义一个链式栈的类 Entry head=null; public linkstack(){ this.head=new Entry(); } class Entry{ int data; Entry next; ...

2018-05-08 18:42:03 254

原创 Java数据结构之栈以及栈的各种操作

什么是栈:栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出栈(Pop)。若栈中没有任何元...

2018-05-05 21:56:33 936

原创 双向链表及其各种操作

什么是双向链表:我们都知道单向链表中的每一个节点有且只有一个指针,这个指针就是用来指向下一个节点的,单向链表顾名思义就是链表方向是单方向的,而本文要介绍的双向链表就是链表方向是双方向的,也就是双向链表中的每一个节点有两个指针,一个指针用来指向上一个节点(前驱),另一个指针用指向下一个节点(后继)。双向链表各种操作头插法 代码实现 public void inse...

2018-05-05 21:42:25 452

原创 循环链表及其各种操作

什么是循环链表: 将单链表中终端结点的指针端由空指针改为指向头结点,就使整个链表形成一个环,这种头尾相接的单链表成为单循环链表,简称循环链表(circular linked list)。循环链表的各种操作与单链表的相似,只是要注意循环链表的尾结点是指向头结点的class TestCLink{ Entry head; public TestCLink(){//头结点的初...

2018-05-05 21:18:54 246

原创 java顺序表及其各种操作

顺序表: 线性表的顺序表是,指的是用一组地址连续的存储单元一次存储线性表的数据元素。以元素在计算机内“物理位置相邻”来表示线性表中数据元素之间的逻辑关系。只要确定了存储线性表的起始位置,线性表中任何一数据元素都可以随机存取,所以线性表的存储结构是一种随机存取的存储结构。 由于高级程序设计语言中的数组类型也具有随机存取的特性,因此,通常都用数组来描述数据结构中的顺序存储结构。 优点——随机存...

2018-05-03 21:09:12 875

原创 俩个有序链表合并

//先创建类class TestLink{ Entry head; public int data; public Entry getHead() { return head; } public void setHead(Entry head) { this.head = head; } pub...

2018-05-02 13:57:54 153

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除