JavaSE
文章平均质量分 86
JavaSE
掉了颗兔牙lx
momo
展开
-
优先级队列 —— 堆
堆在逻辑上是一棵完全二叉树,物理上是保存在数组中的。满足任意节点的值都大于其子树中节点的值,叫做大根堆,任意节点的值都小于其子树中节点的值叫做小根堆。堆的基本作用是快速找集合中的最值。...原创 2022-08-14 08:15:00 · 496 阅读 · 1 评论 -
初识二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的节点,称为根节点,除根结点外,其余节点被分成 m (m > 0)个互不相交的集合,每个集合又是一棵与树类似的子树。...............原创 2022-08-08 21:12:23 · 164 阅读 · 0 评论 -
Java 中的栈和队列
在顺序队列中,当下标走到队尾后,不能再往后走插入元素,但其实数组中还有位置,这叫做“假溢出”,为了解决这个问题提高数组利用率,就出现了循环队列。队列是一种仅支持在表尾进行插入操作、在表头进行删除操作的线性表,插入端称为队尾,删除端称为队首,因整体类似排队的队伍而得名。front:指向循环队列的第一个元素下标,rear:指向循环队列的最后一个元素的下一个下标。,元素入队即将新元素加在队列的尾,元素出队即将队首元素取出,它后一个作为新的队首。,使之成为新的栈顶元素;,使其相邻的元素成为新的栈顶元素。...原创 2022-08-06 18:30:24 · 2825 阅读 · 0 评论 -
初始 List 接口
List 是 Java 中线性表定义的接口,是有序集合(也称为序列 ),是实现接口中的一个接口。该接口中可以精确控制列表中每个元素的插入位置。用户可以通过索引访问元素,并搜索列表中的元素。......原创 2022-08-03 20:40:26 · 324 阅读 · 0 评论 -
初始 Java 集合框架
Java集合框架JavaCollectionFramework,又被称为容器container,是定义在java.util包下的一组接口interfaces和其实现类classes。表现为将多个元素放在一个集合中,方便对这些元素进行增删改查CRUD。举例一组牌的集合(一副扑克牌)JCFJava集合框架黄色方框代表的是接口,蓝色方框代表的是抽象类,棕色方框代表的是普通类。上图中,Iterator是一种迭代器,用来遍历集合。Java集合框架分为两大种。............原创 2022-08-01 23:13:17 · 301 阅读 · 0 评论 -
Java 中的常见排序算法 —— 七大基于比较的排序算法
排序方法最好一般最坏空间复杂度稳定性直接插入排序O(n)O(n^2)O(n^2)O(1)稳定希尔排序O(1)不稳定选择排序o(n^2)o(n^2)o(n^2)O(1)不稳定堆排序O(1)不稳定冒泡排序O(n)O(n^2)O(n^2)O(1)稳定快速排序O(n^2)不稳定归并排序O(n)稳定httpshttpshttpshttpshttpshttpshttps。...原创 2022-07-24 23:29:27 · 836 阅读 · 1 评论 -
泛型和包装类
我们在实现顺序表时,在声明阶段不能确定这个顺序表到底实际存的是什么类型的元素,所以我们将顺序表的元素类型定义成Object类型,这样就可以很自由的存储指向任意类型对象的引用到我们的顺序表了。//保存顺序表的元素,即Object类型的引用//保存顺序表内数据个数publicvoidadd(Objecto){尾插}publicObjectget(intindex){获取index位置的元素}...}但是有时候我们就会遇到一些问题,比如泛型。...原创 2022-07-19 23:09:40 · 152 阅读 · 0 评论 -
Java 内部类总结
嵌套在其他类内部的类,根据出现的位置和关键字可以分为以下四种内部类:成员内部类、静态内部类、方法内部类、匿名内部类。成员内部类的用法和成员方法差不多.代码示例:1. 创建内部类的语法:a. 在外部类内部创建内部类对象 内部类名 inner = new 内部类名();b. 在外部类的外部创建内部类对象(前提内部类不是 private)外部类.内部类 inner = new Outter().new Inner();2. 内部类可以变相的解决 Java 单继承局限。上述例子中 InnerExtend 类没原创 2022-07-13 12:19:48 · 300 阅读 · 0 评论 -
认识 Java 中的异常 看这篇
目录1. 初始异常2. 防御式编程3. 异常的基本用法3.1 基本语法3.2 为什么要处理异常3.3 关于异常的处理方式3.4 异常处理流程3.5 捕获异常的注意点3.6 抛出异常3.7 关于finally4. Java 异常体系4.1 Java 内置的异常类之间的继承关系图4.2 受查异常和非受查异常的区别5. 自定义异常类异常指的是程序在运行时出现错误时通知调用者的一种机制。“运行时”指的是程序已经编译通过得到 class 文件了,再由 JVM 执行过程中出现的错误。而有些错误是编译过程中就会出错,这是原创 2022-07-12 17:18:29 · 1418 阅读 · 0 评论 -
Java 中的接口以及常见的 Cloneable 接口
接口在 Java 中是一个抽象类型,是抽象方法的集合,是抽象类的更进一步。接口通常以 Interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。在打印图形的示例中(可以看上一篇),父类中没有 Shape 没有包含别的非抽象方法,所以也可以将它设计成一个接口。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。接口中只能包含抽象方法。对于字段来说, 接口中只能包含静态常量(final static)。小结:....原创 2022-07-10 20:34:43 · 1063 阅读 · 1 评论 -
Java 中的抽象类
目录1. 概念2. 理解抽象类3. 总结在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类使用 abstract 定义,并且抽象类是普通类的超集,除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。抽象类只是比普通类多了一些抽象方法而已。在上面代码中可以发现父类 Shape 类中的 draw 方法并没有实际的内容,绘制图形都是由 Sh原创 2022-07-10 11:54:11 · 802 阅读 · 0 评论 -
Java 三大特性之多态
目录1. 多态实现的三个必要条件1.1 继承1.2 向上转型1.2.1 向上转型发生的时机1.3 重写2. 理解多态(多态示例)3. 使用多态的好处3.1 类调用者对类的使用成本进一步降低3.2 简化性 3.3 可扩展能力更强4. 多态的实现方法5. 向下转型 多态是指同一个行为具有多个不同表现形式或形态的能力。当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。向上转型就是子类对象转换为父类的引用,是天然发生的。代码示例: 上面的代码中,我们有原创 2022-07-09 21:11:27 · 312 阅读 · 1 评论 -
Java 中的关键字(一)—— static 关键字 看这篇就够了
目录关键字 static1. 😊修饰变量2. 😊修饰方法3. 😊修饰代码块4. 😊修饰类作用:Java 中的静态变量和类相关, 和具体的实例无关。代码示例:从上面代码可以看出 count 被 static 所修饰,同一个类的不同实例共用同一个静态属性。且不属于对象,访问方式为:类名 . 属性。小结:例题:假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?()public class A{ public int i; static ....原创 2022-07-08 15:29:48 · 2083 阅读 · 2 评论 -
单链表练习题 —— 虚拟头节点&递归解法
文章目录虚拟头节点1. 定义虚拟头节点2. 增加链表元素3. 删除链表元素4. 练习题递归解法虚拟头节点1. 定义虚拟头节点 private Node dummyHead = new Node(-1);通过上篇文章可知,因为单链表只能从前向后遍历的特点,单链表的操作都会使用前驱节点定位指定节点,但是头节点没有前驱,所以每次都会先判断头节点如何进行操作。因此就引入了虚拟头节点,虚拟头节点是不存在的,但是有了虚拟头节点后每个节点都有了前驱这样就减少了考虑头节点的步骤。2. 增加链表元素 /*原创 2022-05-25 16:43:15 · 184 阅读 · 0 评论 -
图解链表 —— JAVA 中的双向链表
1. 双向链表前面提到了单向链表,单链表的特点是只能从前向后遍历,但是如果我们已知一个节点在链表靠后的位置,这时如果使用单链表效率就会很低,因此引入了双向链表就可以快速的找到靠后的节点。双向链表与单向链表的区别就是它不仅有后继节点,还有前驱节点。这样就既存储了下一个节点的地址,也存储了前一个节点的地址。2. 双向链表的定义节点类:class DoubleNode { // 指向前驱节点 DoubleNode prev; // 具体存储的数据原创 2022-05-22 23:43:17 · 5087 阅读 · 10 评论 -
图解链表 —— JAVA中的单链表基本操作
文章目录1. 什么是链表2. 链表的种类3. 创建单链表3.1 创建 Node 类(车厢类)3.2 创建 MySingleList (火车类)4. 单链表的基本操作4.1 增加链表元素4.1.1 在链表头部添加元素4.1.2 在链表任意位置添加元素4.1.3 在链表尾部添加元素4.2 删除链表元素4.2.1 删除第一个节点元素4.2.2 删除任意位置 index 元素4.2.3 删除链表中指定元素的第一个节点4.2.4 删除链表的所有指定元素4.3 查找链表元素4.3.1 判断链表中是否包含元素 data4原创 2022-05-17 22:13:11 · 2220 阅读 · 10 评论 -
简单认识顺序表的基本操作
顺序表是用一段==物理地址连续的==存储单元依次存储数据元素的线性结构,一般采用动态数组存储。顺序表一般分为:静态顺序表和动态顺序表。静态顺序表是在已知需要存放数据元素大小的情况下使用,动态顺序表更为多见,根据需要动态的分配空间。顺序表的基本操作增删查改就是基于动态数组实现的。原创 2022-05-13 15:15:39 · 456 阅读 · 0 评论 -
数组练习题
文章目录1. 将数组转换为字符串2. 复制数组,将一个数组复制到另一个新的数组2.1 整体复制2.2 部分复制3. 找数组中的最大值4. 求整型数组的和4.1 暴力解法==4.2 递归解法==5. 求整型数组的平均值6. 如何判断数组是一个有序的集合7. 查找数组中的目标元素7.1 暴力解法==7.2 二分查找==(分治思想)8. 数组排序9. 数组的逆序排列10. 数组数字排列1. 将数组转换为字符串1.1 第一种方法是 JAVA 中 JDK 里自带的方法:// 将数组转换为字符串String a原创 2022-05-16 15:52:33 · 125 阅读 · 0 评论 -
什么是数组?认识 Java 中的数组
文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言数组是 JavaSE 中遇到的第一个引用类型,在数据结构中属于顺序表。学好数组就是学好数据结构的一个重要基础。1. 数组是什么?如果我们需要两个数据就可以直接创建两个变量,如果需要多个数据,直接创建会很麻烦,这时候就会使用“批量生产”,而数组就是可以“批量”创建变量,需要注意的是在 Java 中数组是创建相同类型的变量。2. 创建数组2.1 基本语法(数组的声明和初始化原创 2022-05-15 12:57:09 · 1298 阅读 · 1 评论 -
什么是方法递归?过程分析及练习
举例:求 N 的阶乘转化为递归问题:用数学归纳法来看:起始条件: N = 1 的时候, N! 为 1。这个起始条件相当于递归的结束条件。递归公式: 求 N! , 可以把问题转换成 N! => N * (N-1)。代码示例:执行过程图:执行过程图:4.3 写一个递归方法,输入一个非负整数,返回组成它的数字之和例如,输入 1729, 则应该返回1+7+2+9,它的和是19.4.4 求斐波那契数列的第 N 项4.5 求解汉诺塔问题汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower原创 2022-07-07 16:28:35 · 184 阅读 · 3 评论 -
String类详解(三)
文章目录StringBuffer 和 StringBuilder1. 修改字符串的步骤2. String类 和 StringBuilder 类的相互转换2.1 String 类 转为 StringBuilder 类:2.2 StringBuilder 类 转为 String 类:3. StringBuilder 独有的方法StringBuffer 和 StringBuilderString类 的特点:不可变性任何字符串常量都是String对象,而String的常量一旦声明就不可改变,如果改变对象内容,原创 2022-04-24 14:40:24 · 189 阅读 · 0 评论 -
String类详解(二)
字符串常见操作1. 字符串的比较通常在比较两个int 型变量时,我们使用 = = 完成,但是如果在String 类上使用 == ,就会产生错误。举例:public class StringDemo3 { public static void main(String[] args) { String str2 = "Hello"; String str3 = "Hello"; System.out.println(str3 == str2);原创 2022-04-24 12:16:52 · 940 阅读 · 0 评论 -
String类详解(一)
1. 常见的构造String的方式直接构造String str = “Hello World”;将字符串封装成字符串对象String str = new String(“Hello World”);将字符数组的数据封装成字符串对象char[ ] array = {‘a’, ‘b’, ‘c’};String str = new String(array);2. String类的不可变性String 类是引用类型,是不可变的。举例:String str1 = “Hello”;Str原创 2022-04-23 23:53:23 · 2588 阅读 · 0 评论 -
重载和重写的区别总结
目录1. 什么是重载2. 什么是重写3. 二者的区别 重载的规则:代码示例:重写的规则:访问权限由大到小:public > protected > default > private代码示例:ps:推荐在代码中进行重写方法时显式加上 @Override 注解 。运行结果:......原创 2022-07-06 20:08:57 · 801 阅读 · 0 评论 -
Java中的运算符总结 —— 逻辑运算符、位运算符、移位运算符
Java中运算符,逻辑运算符,位运算符,移位运算符,原码、反码、补码之间的关系逻辑运算符主要有三个: && 、|| 、 !逻辑运算符的返回值和操作数都是boolean类型。原创 2022-05-02 15:40:58 · 4505 阅读 · 0 评论 -
Java 中的八大基本数据类型、类型转换
目录1. ♥常见的数据类型2. ♥引用数据类型3. ♥类型转换4. ♥数值提升5. ♥int 和 String 之间的相互转换八大基本数据类型:除了常见的八种数据类型还有一些引用数据类型:String类(字符串类型)、数组、类、接口等。总结:Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验。4.1 小范围提升大范围当 int 和 long 混合运算的时候, int 会提升成 long, 得到的结果仍然是 long 类型, 需要使用 long 类型的变量来接收结原创 2022-07-05 17:13:30 · 1812 阅读 · 3 评论 -
Java 是什么?Java 的特性、编程环境
Java 是一门面向对象的编程语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java 还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。Java语法是 C++ 语法的一个“简易版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java 开发环境远远超出大多数其他编程语言的开发环境。什么是面向对象? 就是做饭时,食材是对象,烹饪食材原创 2022-07-05 16:09:53 · 73645 阅读 · 0 评论