自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Java的String不可变字符串身份的讨论

String不可变字符串java中的String是不可变字符串,这个是官方发布的身份证明。Strings are constant; their values cannot be changed after they are created.字符串是常量,他们的值在创建后不能被更改。我们可以通过JDK的String源码中看到相关的表现public final class String implements java.io.Serializable, Comparable<Stri

2021-02-25 17:12:39 118

原创 String的加减运算及Intern()方法的解析

String的加减运算及Intern()方法的深度解析一.String的基础知识二.String的运算细节三.Intern()方法的作用

2020-12-24 17:12:15 3802 2

原创 HashMap有趣的分析

HashMap的源码解析预备知识哈希表哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方。(自己的语言:根据对象的特点(地址值,对象属性,数值……)经过特殊计算(哈希函数)得到一个数值(哈希值),把该数字(哈希值)对应的对象放入表中。下次需要获得该对象时,再根据对象的特点经过同样计算得到数值,根据数值去表中快速查询到。)哈希冲突哈希是通过对数据进行再压缩,提高效率的一种解决方法。通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然

2020-12-16 23:27:08 137 1

原创 LinkedList的源码全解

LinkedList的源码全解简介LinkedList也是List接口的实现类。LinkedList的底层是使用双向链表维护的。与其相关的类和接口我们可以看到LinkedList主要实现的两个接口时List和Queue接口。那什么是双向链表LinkedList的底层就是维护的双向链表。常用方法LinkedList也可以作为队列使用其中有push()、pop()、peek()、pull()的有关队列和堆的方法等。下面我们对常用的方法进行代码解读源码解读LinkedList的源码较为

2020-12-11 21:21:49 221

原创 经典排序算法4——非比较排序(计数排序,桶排序,基数排序)

排序算法关于排序算法的简介请看上一篇文章经典排序算法1——冒泡,选择,插入经典排序算法2——希尔,归并,快速经典排序算法3——堆排序8 计数排序将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。8.1 算法描述循环一遍数组arr,得到数组中的最大值maxInt和最小值minInt。创建一个额外的计数数组count[maxInt - minInt + 1],确保原数组arr中的每一个元素在计数数组中都有位置循环

2020-12-03 10:45:23 110

原创 经典排序算法3——堆排序

排序算法关于排序算法的简介请看上一篇文章经典排序算法1——冒泡,选择,插入经典排序算法2——希尔,归并,快速7 堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。二叉树,大顶堆,小顶堆?7.1 算法描述有一个长为n的数组arr.首先把arr数组看成二叉树1.把arr[0~n]数组排序成大顶堆2.把大顶堆的顶即arr[0],与数组的最后一个数进行交换。则现在数组中只有 arr[0 ~ (

2020-12-02 20:09:52 102

转载 经典排序算法2——希尔,归并,快速

排序算法关于排序算法的简介请看上一篇文章经典排序算法1——冒泡,选择,插入4.希尔排序希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序实质上是一种分组插入方法。4.1 算法描述有数组arr,数组长度为m;1.确定步长gap(一般取 m/2 ),对数据进行分组。如步长为3,则 {arr[0],arr[3],arr[6],arr[3n],……},{arr[1]

2020-12-02 19:30:58 89

原创 static 对 子类、父类加载初始化顺序的影响

1.static关键字的介绍static是一个成员修饰符.其作用:1.静态修饰 类的属性 和 类的方法static String name; // 修饰类的属性static void test1(){...} // 修饰类的方法2.在类中构成代码块static{...}3.构成静态内部类static class xxx{}4.静态导包import static java.lang.Integer.*;如需具体了解static的用法,请先看别的博客吧!我还没写

2020-11-27 23:33:03 405

原创 java的基本数据类型及其包装类

java的数据类型java的数据类型分为两类基本数据类型:整数int,浮点数float,字符char……。引用数据类型:类,对象,接口,数组。当我们定义基本数据类型的变量时候,其值直接保存在该变量中。如果我们定义引用数据类型的变量时候,其值所在的地址,保存在该变量中。1.基本数据类型1.1基本数据类型的范围1.2基本数据类型之间的转换主要有两个基本原则类型转换中默认----->容量小的可以自动转换(隐式转换)成容量大的在高级向低级转时----->强制类型转换

2020-11-26 17:08:02 225

原创 java中的自增(++),自减(--)——踩坑

以前学艺不精,导致今天踏坑。重点:请注意这张图: 记住自增自减(++ --)的运算优先级高于赋值(=,-=…)符号自增(++)和自减(–)的自我介绍自增(++)和自减(–)属于java运算符中的算术运算符。基本使用++ 运算,变量自己的值加1。反之,-- 运算,变量自己的值减少1,用法与++ 一致。1.自增(++)变量前++ :例如 ++a : 变量先自身加1,然后再将加1后的结果进行其他使用 。变量后++ :例如 a++ : 变量先加载到别的地方(可理解

2020-11-25 21:26:30 551 2

转载 经典排序算法1——冒泡,选择,插入

排序算法一 简述1.常见的排序算法主要分为两类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 主要有(冒泡排序,选择排序,插入排序,快速排序,希尔排序,堆排序,归并排序)非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 计数排序,桶排序,基数排序2.不同算法优缺点相关概念:时间复杂度: 排序数据的总的操作次数。反映当n变化时,操

2020-11-24 21:08:44 95

原创 java集合-ArrayList全解

java集合——ArrayList简介ArrayList是 java 集合框架中比较常用的数据结构了。继承自 AbstractList,实现了 List 接口。底层基于数组实现容量大小动态变化。允许null存在。同时显现RandomAccess(快速访问),Cloneable(复制),Serializable(序列化)。public class ArrayList<E> extends AbstractList<E> implements List<E&g

2020-10-28 00:38:42 115

原创 java集合统述

JAVA集合集合可以看作是一种容器,用来存储对象(Java集合中实际存放的只是对象的引用,每个集合元素都是一个引用变量)。由上图可以看出主要有两种类型的容器集合(Collection),存储一个元素集合图(Map),储存键/值对的映射集合框架是一个用来代表和操纵集合统一的架构。所有的集合框架都包括如下内容:接口:是代表集合的抽象数据类型,类如List、Set、‘Map等,之所以定义多个接口,是为了以不同的方式操作集合对象。实现类:是集合接口的具体实现。它们可以重复利用的数据结构。例如:Ar

2020-10-26 01:26:19 149

空空如也

空空如也

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

TA关注的人

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