自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LikeSundayLikeRain*的博客

日常学习记录

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

原创 哈希算法

1.1哈希算法定义 对某个元素进行哈希运算,把一个较长的二进值映射为较短的固定长度的二进制值,这个小的二进制值就是哈希值,是一个存储地址,然后根据地址进行元素的存储操作。具体映射方法采用位运算。(不用取模,因为第一,如果是负数,需要便为正数;第二效率较慢)。JDK1.7 的HashMap底层采用:数组(数组的查询元素的效率为O(1))+链表。数组的默认存储空间为16(2^n)。为什么是2^n,因为只有是2^1,进行减1操作,才能拿到全是1的二进制数值,在进行按位与,才能快速运用位运算的方式拿到数...

2020-07-17 22:33:01 324

原创 队列介绍

1.1队列的定义队列是一种特殊的线性表,他只允许在表的前端进行删除操作,在表的后端进行插入操作。1.2队列的特征(1)通常称插入的这一端为对头,另一删除段为队尾。(2)当表中没有元素称为空队。(3)队列是先进先出的线性表。...

2020-07-17 18:29:54 249

原创 栈的介绍

1.1栈的定义 栈是限制在表的一端进行插入和删除运算的线性表。1.2栈的特征(1)通常称插入和删除这一端称为栈顶,另一端称为栈底。(2)当表中没有元素时,称为空栈。(3)栈是先进后出的线性表。 元素以a1、a2....an的顺序进栈,退栈的次序依次却是an....a2、a1;1.3链式栈的代码实现 链式栈是一种数据存储结构,可以通过单链表的方式来实现。使用链式栈的优点在于它能克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空...

2020-07-16 22:26:47 284

原创 双向链表

1.双向链表1.1双向链表的定义 双向链表也叫双链表,是链表的一种。它的每个数据节点中都有两个引用。分别指向直接前驱和直接后继。所以从双向链表的任意一个节点开始,都可以很方便的访问它的前驱节点和后继节点。1.2双向链表示意图1.3双向链表增删改查思路 双向链表比单向链表多了一个指向前一个节点的指针。1.3.1尾部插入节点(1)定义双向链表的最后一个节点即tailEntry;(2)使tailEntry.next指向要插入的节点。(3)使...

2020-07-16 21:59:08 225

原创 单项循环链表

1.1单项循环链表图示 结构和单链表相同,单项循环链表中的尾结点的next域指向头结点,形成环状。1.2单项循环链表代码实现 链表底层代码结构实现:public class SingleCircleLink<E extends Comparable<E>> implements Link<E>{ static class Enrty<T>{ private T value; private Entry&l...

2020-07-16 21:26:25 207

原创 单链表真题演练

1.将两个有序单链表合并成一个有序单链表public class MergeSingleLinkList { public static void main(String[] args) { //创建两个单链表 //链表1 Node node1_4 = new Node(289); Node node1_3 = new Node(186, node1_4); Node node1_2 = new Node(167,

2020-07-16 20:53:47 196

原创 Java基础数据结构

1.线性表1.1线性表特征(1)元素个数有限(2)逻辑上元素有先后次序(3)数据类型相同(4)进讨论元素间的逻辑关系注:线性表是逻辑结构,顺序表和链表是存储结构 线性表 顺序存储 顺序表 链式存储 单链表、双链表、循环链表 1.2顺序表1.2.1顺序表的定义 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称为顺序表。顺序表是将表中的节点一次...

2020-07-13 10:18:53 153

原创 快速排序

1快速排序思想1.1快速排序思想 快排主要通过选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。依次递归,达到总体待排序序列都有序。1.2快速排序算法描述 选择基准:在待排序列中,按照某种方式挑出一个元素,作为“基准”。 分割操作:以该基准在序列中的位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比该机准大。 递归对两个序列进行快速排序,直到序列为空...

2020-07-09 14:31:37 150

原创 Java排序算法

七种内置排序算法:1.内置排序算法以及算法效率分析1.1冒泡排序1.1.1冒泡排序算法思想 对所有相邻的元素进行排序比较,直到元素不需要比较,重复比较(数组长度-1)轮。1.1.2冒泡排序算法描述(1)比较相邻的元素,如果第一个数比第二个数大,就交换他们两个。(2)对每一对相邻的元素做同样的操作,从开始第一到结尾最后一对,在最后的元素就会是最大的数。(3)针对所有的元素重复以上的步骤。1.1.3冒泡排序代码实现private static<T...

2020-07-08 16:32:38 134

原创 java异常

1.异常的定义 在java中,阻止当前方法和作用域的情况,称之为异常。异常是程序中的一些错误,但不是所有错误都是异常。 异常的原因通常是以下几种:(1)用户输入了非法数据(2)要打开的文件不存在(3)网络通信时连接中断,或者jvm内存溢出 这些异常可能是用户错误、程序错误、物理错误引起的。 理解java异常处理是如何工作的,需要掌握三种类型的异常。编译期异常:最具代表性的检查性异常是用户错误或问题引起的异常。程序员无法预见,例如要打开一个文件,文件不存在...

2020-07-03 17:44:28 168

原创 Java泛型

1.泛型 泛型的本质是参数化类型,参数化类型就是把操作的数据类型指定为一个参数,将类型由原来的的具体的类型参数化,将类型定义为参数类型(类型形参),在使用/调用时,传入具体的类型(类型实参),这种可以用在类、接口、方法的创建中,分别称为泛型类、泛型接口、泛型方法。. 我们把一个对象放入集合中,集合不会记住此对象的类型,当我们从集合中取出此对象时,把对象的编译类型变成了object类型,但运行时类型任然为其本身类型。因此,取出对象时,人为的强制转换类型为具体的目标类型,很容...

2020-07-03 11:46:00 178

原创 抽象类和接口复习

1.抽象类1.1抽象类定义 在面向对象中,所有的对象都是由类进行描绘实现的,但是并不是所有的类都是用来描绘对象的,当一个类中没有包含足够的信息描绘一个具体的对象。我们把这种类定义为一个抽象类。1.2抽象类的特征 (1)不能用来实例化对象,通过被继承来使用。 (2)一个类只能继承一个抽象类。 (3)抽象类的修饰符不能是private。 (4)抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类。 (5)构造方法、类方法不能声明为抽象方...

2020-07-02 10:02:59 161

原创 Java继承多态面试题

1.多态的实现原理2.面向对象的特征之一——多态2.1多态的定义 多态是同一个行为具有不同的表现形式或形态的能力。允许不同类的对象对同一消息做出响应,同一消息可以根据发送的对象不同采用不同的行为方式。 对于面向对象,多态分为编译时多态和运行时多态,编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数。通过编译后会产生两个不同的函数。在运行时谈不上多态。而运行时多态是动态的,通过动态绑来实现。2.2多态的条件 发生...

2020-07-01 17:43:00 1007

原创 Java类和对象面试问题总结2

1.谈谈你对static关键字的理解?1.1static的特点(1)static是修饰符,用于修饰成员。(2)static修饰的成员被所有对象所共享。(3)static优于对象存在,因为static修饰的成员已经随着类的加载已经存在了。(4)static修饰的成员多了一种调用方式,可以直接被类名所调用,类名.静态成员。(5)static修饰的成员是共享数据,对象中的存储是特有数据。1.2static变量(1)按照是否静态对类成员变量进行分类,一种是被static修饰的成员变量

2020-06-30 20:55:01 185

原创 Java类和对象面试问题总结1

1.谈谈你对Java面向对象的理解? 面向对象就是把构成问题的事务分解成一个个对象,建立对象的目的不是一个步骤,而是为了描述一个事务在解决问题中的行为。类是面向对象的一个重要概念,类是很多个具有相同属性和行为特征的对象抽象出来的,对象是类的一个实例。 类具有三个属性:继承、封装和多态。封装:通过把程序模块化、对象化,通过把这些具体事物的特性属性和通过这些属性实现的具体方法放到一个类中。核心思想就是“隐藏细节”,“数据安全”。利用抽象数据类型将数据和基于数据的操作封装在一...

2020-06-29 14:49:10 336

原创 Java数组面试问题总结

1.字符串替换问题,将字符串中的每一个“a”字符替换成3个“#”字符。要求:时间复杂度:O(n)。备注:用数组操作。

2020-06-27 11:53:52 246

原创 数组复习

1.一维数组 数组是一个包含相同数据类型的集合。集合里存放的是相同类型的数据,我们把这样一个集合就称为数组。1.1一维数组定义及初始化 一维数组的定义有三种方式:(1)先声明后初始化 int[ ] arr; arr=new int[5];//数组中包含5个元素,每一个元素的初始值都是int类型的默认值0;(2)声明的同时进行初始化方式 int[ ] arr=new int[ ]{1,2,3};(3)先声明后初始化,使用的是系统分配的默认值...

2020-06-24 17:09:30 136

原创 Java运算符复习

1.如何快速实现2的3次方?public static void mian(String[] args){ int num=2<<2; System.out.println(num);} 2.二分(折半)查找的优化问题?

2020-06-22 20:39:30 120

原创 Java程序控制语句

1.Java程序控制语句程序控制可以定义为对程序语句执行的顺序进行的规定,有三种结构1.1顺序结构1.2分支语句 条件分支语句 switch...case语句 单分支条件语句 二分之条件语句 嵌套条件语句 多分支条件语句 if(条件表达式){ 语句或语句块; } if(条件表达式){ 语句或语句块1 }e...

2020-06-18 21:05:02 222

原创 运算符语句

1.运算符的分类运算符 算术运算符 + - * / % ++ -- 赋值运算符 =f\符合符号运算符(+= -= *= /=) 逻辑运算符 && || ! 按位运算符 | & ^ ~ >> >>> << 关系运算符 > < >= <= != == 1.1位运算符位运算符是对整数数值的二进制表示进行运算1.1.1按位求反运算符~正...

2020-06-18 14:47:27 216 1

原创 Java跨平台特性

1.Java跨平台特性 Java有一个其他语言都没有特点,那就是跨平台。平台就是指我们计算机的操作系统,例如:Windows、Linux、Mac等操作系统。跨平台的意思就是Java程序,在一次编译后,在这些平台上都可以运行。其他编程语言没有这个特性,例如c语言在Windows上编译的文件,放到Linux系统上运行,可能就有不兼容问题。 首先java的跨平台不是指java语言本身具有跨平台特性,而是不同平台上都有可以让java运行的环境,这个运行环境就是JRE。JRE由JVM和其...

2020-06-15 21:17:36 1855

原创 java基本数据类型定义的变量所占内存字节数

1.Java数据类型概述 1.1基本数据类型 (1)数值型 整数型:byte,short,int,long;数据类型 存储空间 bit 数 取值范围 默认值 备注 byte 1字节 1*8 -2^7~2^7-1 0 short 2字节 2*8 -2^15~2^15-1 0 int 4字节 4*8 -2^31~2^31-1 0 ...

2020-06-15 20:05:37 696

原创 Java数据结构--ArrayList、链表、队列、栈(三)

1.栈和队列栈:先进后出队列:先进先出2.栈的基本操作(1)初始值private T[] element;private int top;(2)入栈public void push(T value) { if (top == element.length) { element = Arrays.copyOf(element, elemen...

2019-09-27 17:28:03 125

原创 Java数据结构--ArrayList、链表、队列、栈(二)

1.LinkedListLinkedList底层是由链表实现的,查询慢增删快。2.LinkedList基本操作(1)链表节点 private Entry<T> headEntry; private Entry<T> tailEntry;//标记尾部(2)头部添加 public void addHead(T value){ ...

2019-09-27 17:09:41 149

原创 Java数据结构--ArrayList、链表、队列、栈(一)

1.ArrayListArrayList底层是由数组实现的,查询块,增删慢。2.ArrayList特点(1)新增时会在必要的时候扩大数组容量(2)插入一个元素时,会把插入的索引位置及以后的元素都往后挪一位(3)删除元素时同插入,把删除位置索引以后的元素都往前挪一位3.ArrayList基本操作(1)初始值确定 private T[] element; pri...

2019-09-27 16:54:12 196

原创 java泛型知识点总结

1.泛型的基本应用泛型可以解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。在类声明或者实例化时只要指定好需要的类型即可。2.泛型的构造方法[访问权限]class 类名称 <泛型类型标识1,泛型类型标识2,...,泛型类型标识3>{[访问权限] 泛型类型标识 变量名称;[访问权限]泛型类型标识 方法名称...

2019-09-27 15:37:22 213 1

原创 Java基础知识

1.子类的初始化顺序父类(静态变量,块)子类:静态变量,块父类:实例变量,块,构造方法父类(静态变量,块)子类:静态变量,块。父类:实例变量,块,构造方法。子类:实例变量,块,构造方法静态变量什么时候初始化 -> 类的加载过程 1.加载 2. 链接 3.初始化static int a = 10; ->2. 准备阶段-> 静态变量开内存,赋初始值0初始化...

2019-09-27 15:11:53 113

空空如也

空空如也

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

TA关注的人

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