![](https://img-blog.csdnimg.cn/bfb012f570e3474a9c3a2d8b0af5728a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaSE
文章平均质量分 68
Java核心知识
名之以父
阿里云专家博主,华为云云享专家。学过Java,Python,最终发现自己喜欢前端,热爱前端,乐于分享前端知识,无论是基础知识的总结还是刷题,框架等等都会涉及
来自EPI软件实验室
展开
-
常见数据结构简述
目录:一、数据结构概述二、栈三、队列四、数组五、链表六、二叉树,二叉查找树七、平衡二叉树八、红黑树内容:一、数据结构概述数据结构是计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排在一起的通常情况下,精心选择的数据结构可以带来更高效的运行或者存储效率二、栈特点:先进后出,后进先出先进的元素排在栈底处,从底向上棑,最后一个排的元素放在栈顶三、队列特点:后进后出,先进先出数据从后端进入队列模型的过程称为:入队列.原创 2021-11-30 22:06:32 · 1311 阅读 · 0 评论 -
深度优先搜索(四):相同的树(力扣)
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false...原创 2022-05-01 11:15:00 · 191 阅读 · 0 评论 -
深度优先搜索(三):恢复二叉搜索树(力扣)
一、题目描述给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 的左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [3,1,4,null,null,2]输出:[2,1,4,null,null,3]解释:2 不能...原创 2022-04-24 20:01:11 · 788 阅读 · 2 评论 -
深度优先搜索(二):验证二叉搜索树(力扣)
一、题目描述给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4 。提示:树原创 2022-04-23 23:07:52 · 503 阅读 · 1 评论 -
可以接收多种数据类型参数——可变参数
一、问题引入假如需要定义一个方法求和,该方法可以灵活的完成如下需求:计算1个数据的和。 计算2个数据的和。 计算3个数据的和。 计算n个数据的和, 甚至可以支持不接收参数进行调用。二、作用传输参数非常灵活,方便、 可以不传参数, 可以传输一个参数 可以传输多个参数 可以传输一个数组 可变参数在方法内部本质上就是一个数组可变参数的注意事项:1.一个形参列表中可变参数只能有一个2.可变参数必须放在形参列表的最后面格式:可变参数的格式:数据类型...参...原创 2022-04-22 22:23:26 · 799 阅读 · 0 评论 -
深度优先搜索(一):二叉树的中序遍历(力扣)
一、定义按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。由此可知,二叉树的中序遍历适用递归方法二、例题:给定一个二叉树的根节点 root ,返回 它的中序遍历 。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]三、解析1、准备工作先写..原创 2022-04-21 21:27:42 · 152 阅读 · 1 评论 -
网络通信基础。如何学习网络编程三要素,与TCP/IP通信协议
一、网络编程1、什么是网络编程?网络编程可以让程序与网络上的其他设备中的程序进行数据交互。2、网络通信基本模式常见的通信模式有如下2种形式:Client-Server(CS) 、 Browser/Server(BS)二、网络通信的三要素1、IP地址设备在网络中的地址,是唯一的标识。IP(Internet Protocol):全称”互联网协议地址”,是分配给上网设备的唯一标志。 常见的IP分类为:IPv4和IPv6IPv4:IPv6:128位(...原创 2022-03-22 10:12:08 · 1020 阅读 · 12 评论 -
图的广度优先搜索(bfs)
图的广度优先搜索(Broad First Search)所谓的深度优先搜索,指的是在搜索时,如果遇到一个结点既有子结点,又有兄弟结点,那么先找兄弟结点,然后找子结点。类似于一个分层搜索的过程,广度优先遍历需要使用一个队列以保持访问过的结点的顺序,以便按这个顺序来访问这些结点的邻接结点广度优先遍历算法步骤访问初始结点v并标记结点v为已访问。 结点v入队列 当队列非空时,继续执行,否则算法结束。 出队列,取得队头结点u。 查找结点u的第一个邻接结点w。 若结点u的邻接结点w不存原创 2022-03-21 08:11:40 · 1696 阅读 · 2 评论 -
图的深度优先搜索(dfs)
图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: (1)深度优先遍历(2)广度优先遍历图的深度优先搜索(Depth First Search)指的是在搜索时,如果遇到一个结点既有子结点,又有兄弟结点,那么先找子结点,然后找兄弟结点。深度优先遍历,从初始访问结点出发,初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点, 可以这样理解:每次都在原创 2022-03-20 10:12:32 · 8265 阅读 · 13 评论 -
数据结构=====>图
目录移到右上角啦!一、为什么要学图图能表示多对多的关系,这是别的数据结构所没有的例: 线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点应用场景:1、地图2、集成电路图二、图的定义和分类定义:图是由一组顶点和一组能够将两个顶点相连的边组成的特殊的图:1、自环:即一条连接一个顶点和其自身的边;2. 平行边:连接同一对顶点的两条边;图的分类:按照连接两个顶点的边的不同,可以把图分为以下两种:无向图..原创 2022-03-19 12:20:25 · 512 阅读 · 0 评论 -
Java与Python比较 初探 &&/and Python初步
一、在书写上,1、Python不需要“;”做结尾2、在输出语句中,可以用单引号也可以用双引号print('hello world')二、注释单行注释是: ## 单行注释'''多行注释'''""" 多行注释"""在注释方面,Python对空格有着很多的要求。在单行注释上,需要在#号后面空一格,再书写内容。否则会有下划波浪线(但不影响程序的运行)在多行注释中,需要三个单引号或三个双引号并且注释都需要有下一行(就是保证注释的内容不在最后一行)原创 2022-03-09 19:56:02 · 445 阅读 · 0 评论 -
Java与Python比较 再探 &&/and Python入门(循环判断if,elif,else,while,for和循环else(for-else)
一、输出height = 170.5# 默认本来是几位,就显示几位print(F"我的身高是{height}cm") # 我的身高是170.5cm# 指定小数位 2位小数print(F"我的身高是{height:.2f}cm") # 我的身高是170.50cm# 指定小数位 3位小数print(F"我的身高是{height:.3f}cm") # 我的身高是170.500cm可以控制小数的位数,与Java不同,Java和c的float都只是单精度浮点数,而在Pyth原创 2022-03-24 09:00:00 · 750 阅读 · 1 评论 -
ATM项目的实现
ATM项目实现的功能:1.查询账户2.存款3.取款4.转账5.修改密码6.退出7.注销账户正文1.初始页面 public static void showMain(ArrayList<Account>accounts){ Scanner sc = new Scanner(System.in); while (true) { System.out.println("请您输入您想要做的操作.原创 2021-12-03 19:00:00 · 622 阅读 · 1 评论 -
Map集合的概述与特点,常用API及特有的三种遍历方式总结,带应用
一、概述Map集合是一种双列集合。由两部分组成。键和值。称为键值对。Map集合分为:示例://1.创建一个Map集合对象Map <String , Integer> maps = new HashMap<>();//一行经典代码maps.put("鸿星尔克",3);maps.put("Java",1);maps.put("枸杞",100);maps.put("Java",100);//覆盖前面的数据maps.put(null,null)..原创 2021-12-08 20:49:35 · 409 阅读 · 0 评论 -
集合(一):集合与Collection集合体系的关系及特点
一、与数组的异同相同点:都是容器不同点:1.在存储元素上: (1)元素个数上:数组定义后类型确定,长度固定 集合类型可以不固定,大小是可变的 (2)元素类型上:数组可以存储基本类型和引用数据类型的数据 集合只能存储引用数据类型的数据2.适用...原创 2021-11-30 16:13:51 · 158 阅读 · 0 评论 -
集合(二)Collection 的常用API、遍历方式以及存储自定义类型的数据
一、常用API(共七种)1、添加元素,添加成功,则返回true2.清空集合中的元素//慎用3.判断集合是否为空,是空就返回true,反之返回false4.获取集合的大小5.判断集合中是否包含某个元素6.删除某个元素:如果有多个重复元素默认删除前面的第一个7.把集合转换成数组 //[Mybatis, HTML, 神, wu]package CollectionDeno;import java.util.ArrayList;import java.util.Array.原创 2021-11-30 19:35:58 · 405 阅读 · 0 评论 -
异常体系(入门级初学者)
一、异常概述1、为什么要学习异常: 异常一旦出现,没有提前处理,程序就会退出JVM虚拟机而终止2、什么是异常: 异常是程序在“编译”或“执行”的过程中可能出现的问题。注意:语法错误不在异常体系中3、Exception异常的分类:* 1、编译时异常:继承自Exception的异常或者其他子类,编译阶段就会报错* 必须程序员处理的,否则代码编译就不能通过* 2、运行时异常:继承自RuntimeException 的异常或者其子类,编译阶段是不会出...原创 2021-12-12 18:00:41 · 582 阅读 · 1 评论 -
IO流基础(一)(基础流,低级流)
一、概述IO流的分类总结流的四大类字节输入流:以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流称为字节输入流。字节输出流:以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流称为字节输出流。字符输入流:以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流称为字符输入流。字符输出流:以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络介质中去的流称为字符输出流。IO流的作用?...原创 2021-12-29 22:00:58 · 573 阅读 · 0 评论 -
List集合的特有API,以及List的四种遍历方式小结及异同
一、特点分为:ArrayList 和LinkedList ;均有序,可重复,有索引二、特有API缘由:List集合因为支持索引,所以多了很多索引操作的独特API,其他Collection的功能List也都 继承了(1)Array的特有APIpackage List.API;public class ArrayListDemo { public static void main(String[] args) { //1.创建一个...原创 2021-12-01 22:25:24 · 357 阅读 · 0 评论 -
二分查找和升序排序及利用API(快速排序)的实现
一、升序排序1.首先我们需要先定义一个数组int[] arr = {5,1,3,2};2.之后在排序的时候,需要定义一个变量,来控制循环的次数 j若变量为 i ,那我们发现 j 永远要比 i 大,且随着 i 的变大,j 每轮遍历的数字就越来越少了//i=0 j= 1 2 3//i=1 j= 2 3//i=2 j= 3所以我们可以令:int j = i+1; j < arr.length; j++确定了两个变量之后,我们就开始排序了,也就是..原创 2021-12-07 20:07:35 · 742 阅读 · 0 评论 -
递归算法与经典案例(猴子吃桃问题)及非规律化案例的转化,包含核心思想
一、方法递归的概述1、什么是方法递归方法直接调用自己或者间接调用自己的形式称为方法递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。2、递归的形式直接递归:方法自己调用自己。间接递归:方法调用其他方法,其他方法又回调方法自己。3、递归存在的问题递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出现象。代码演示:(自己调自己) public static void main(String[] args) { test()原创 2021-12-27 22:43:39 · 1297 阅读 · 0 评论 -
Stream流体系(概述,获取,常用API,综合应用与收集)
一、概述1、Stream出现时间:JDK82、作用:简化集合,数组操作的API。结合了Lambda表达式3、Stream流的思想和使用步骤: 先得到集合或数组的Stream流(就是一根传送带) 把元素放上去 然后就利用这个Stream流简化的API 来方便的操作元素二、获取...原创 2021-12-10 22:47:58 · 484 阅读 · 1 评论 -
List的常用API,三种遍历方式及删除重复元素
1.常用API(1)ArrayList1.在某个索引位置处插入元素2.根据索引删除元素,返回被删除的元素3.根据索引获取元素:public E get(int index):返回集合中指定位置的元素4.修改索引位置处的元素:public E set (int index , E element)5.清空集合package List.API;public class ArrayListDemo { public static void main(String[] ar原创 2021-12-05 22:08:16 · 730 阅读 · 1 评论 -
泛型总结:泛型类,泛型方法,泛型接口及优势和通配符
目录:一、泛型概述及优势二、泛型类三、泛型方法四、泛型接口五、通配符和上下限正文:一、概述和优势(1)概述:泛型是JDK5 中引用的特性,可以在编译阶段约束操作的数据类型,并进行检查(2)格式:<数据类型>;注意:泛型只能支持引用数据类型集合体系的全部接口和实现类都是支持泛型的使用的package Genericity;import java.util.ArrayList;import java.util.List;/** * 目标:原创 2021-12-02 20:39:35 · 900 阅读 · 0 评论 -
二分查找(一)
一、概述1、什么是二分查找?二分查找是计算机科学中最基本、最有用的算法之一。 它描述了在有序集合中搜索特定值的过程。二分查找中使用的术语:目标 Target —— 你要查找的值索引 Index —— 你要查找的当前位置左、右指示符 Left,Right —— 我们用来维持查找空间的指标中间指示符 Mid —— 我们用来应用条件来确定我们应该向左查找还是向右查找的索引2、它是如何工作的?在最简单的形式中,二分查找对具有指定左索引和右索引的连续序列进行操作。这原创 2022-01-03 15:12:18 · 370 阅读 · 0 评论 -
File文件概述及各种常用API(包含练习题);常见字符集的介绍和编码解码操作
一、现在存在的问题思路:二、File类1、创建File对象绝对路径和相对路径可以创建文件或文件夹 public static void main(String[] args) { //1、创建File对象(指定了文件的路径) //路径写法:C:\Users\wujianrenn\Desktop\周杰伦\052de5feb53988cc2d5ecfefdc3efaf7.jpg // ...原创 2021-12-31 23:05:18 · 449 阅读 · 0 评论 -
数据结构之链表(单链表,双链表)知识汇总(包含面试题)
一.链表总体介绍:1.单链表:(single linked list)每个链表有一个next指针指向下一个节点,还有一个成员用来存储数值2.双链表:(Douuble Linked List)在单链表基础之上,还有一个prev指针指向前一个节点。3.小结:(1)链表是以节点的方式来存储(2)每个节点包含data域,next域:指向下一个节点(3)链表的每个节点都不是连续存储的(4)链表分有头节点的和不带头节点的,根据实际需求来定第一个节点的data域为nul..原创 2021-12-06 20:31:44 · 2003 阅读 · 2 评论 -
Lambda表达式
一、简介1.概述:Lambda 是JDK8 开始后的一种新语法形式2.作用:简化匿名内部类的代码写法3.简化条件:只能简化函数式接口的匿名内部类的写法形式 (函数式接口:(1)必须是接口,其次有且仅有一个抽象方法的形式 (2)通常会在接口上加上一个@Functionallnterface,标记该接口必须是满足函 数式接口)4.使用好处:Lambda 是一个匿名函数,可以把Lambda 理解为是一段可...原创 2021-11-29 22:27:52 · 185 阅读 · 0 评论 -
正则表达式的介绍及应用
一、正则表达式 1.定义:用于定义字符串的内容 2.用途:(1)匹配单个,多个字符串(matches) (2)简化代码,让代码变得更简洁,更优雅 (3)校验信息,包括电话,座机,邮箱 (4)切割字符串,替换字符串 (5)爬取信息中的内容(可以强记忆,死代码)(pattern)详细介绍:(1)匹配单个,多个字符串(matches)package Regex;/** ...原创 2021-11-29 20:42:12 · 1327 阅读 · 0 评论 -
Arrays类的常用API
一、简述Arrays 的用法(初级)(1)返回数组内容的toString(数组)(2)排序的API(默认自动对数组元素进行升序排序)----------------------sort方法(3)二分搜索技术(前提是数组必须排好序才支持,否则会出现bug(4)返回不存在元素的规律 ---------------------返回应存在的位置的负数 注意:数组如果没有排好序,可能会找不到存在的元素,从而出现bugpackage Arrays;import java...原创 2021-11-29 23:04:38 · 840 阅读 · 0 评论