JavaSE学习心得(APL与算法篇)

news2024/12/27 2:32:07

常用APL和常见算法

前言

常用APL

Math

System

Runtime

Object

​编辑浅克隆

深克隆

Objects

Biginteger

构造方法

成员方法

底层存储方式

Bigdecimal

构造方法

Bigdecimal的使用

底层存储方式

​编辑正则表达式

两个判断练习

两个爬取练习

贪婪爬取和非贪婪爬取

正则表达式在字符串方法中的使用

分组

​编辑捕获分组

非捕获分组

Date时间类

SimpleDateFormat 类

Calendar概述

​编辑 常用方法

Zoneld时区

Instant时间戳

ZoneDateTime带时区的时间

​编辑 DateTimeFormatter用于时间的格式化和解析

LocalDate、LocalTime、LocalDateTime

LocalDate

LocalTime

LocalDateTime

Period

Duration

ChronoUnit

Integer

常见算法

基本查找

二分查找

分块查找

冒泡排序

选择排序

插入排序

​编辑递归算法

快速排序

​编辑​编辑​编辑Arrays 

Lambda表达式

经典算法题


前言

接上期文章:JavaSE学习心得(面向对象篇)

教程链接:黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili

本期分享常用APL与算法部分

常用APL

Math

 补充两个

System

 运用:

Runtime

 运用:

 

Object

Object作为顶级父类构造方法只有无参构造

自动重写equals方法,这样比较的就是对象的内容而非地址值,ptg插件重写toString同理

注意:

浅克隆

这种克隆方式使两个对象地址值会完全一样,遇到引用数据类型的成员变量如数组,一个对象修改了里面的内容的话,另一个对象会跟着变。

为了可以用对象调用clone方法这里重写成这样

深克隆

字符串这里不影响,因为修改时会产生新的字符串对象

Object中的clone方法为浅克隆,可以将第三方写的代码导入项目直接使用深克隆方法。

Objects

这个静态的equals方法防止了调用者为空的情况 

Biginteger

构造方法

 

如果BigInteger表示的数字没有超出long的范围,可以用静态方法获取。
如果BigInteger表示的超出long的范围,可以用构造方法获取。

成员方法

运用:

底层存储方式

这个数以经超出了long的范围

Bigdecimal

构造方法

1.如果要表示的数字不大,没有超出double的取值范围,建议使用静态方法

2.如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法

3.如果我们传递的是0~10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新new

Bigdecimal的使用

运用:这里前三个用的bd2为2.0

UP:远离零方向舍入
DOWN:向零方向舍入
CEILING:向正无限大方向舍入
FLOOR:向负无限大方向舍入

底层存储方式

数组中每一位和字符串参数一一对应

正则表达式

方法为matches,两个\\相当于一个\

两个判断练习

any-rule这个插件有常用正则表达式,用法和ptg一样直接右键,得到的表达式根据需求进行微调。

两个爬取练习

把下面文本中的电话,邮箱,手机号,热线都爬取出来。

有条件的爬取

贪婪爬取和非贪婪爬取

正则表达式在字符串方法中的使用

运用:

分组

每组是有组号的,也就是序号。
规则1:从1开始,连续不间断。
规则2:以左括号为基准,最左边的是第一组,其次为第二组,以此类推。 

运用:

捕获分组

后续还要继续使用本组的数据。
正则内部使用:\\组号
正则外部使用:$组号

非捕获分组

?:就相当于什么都没加,下面这个表达式就相当于[1-9]\\d{16}(\\d|X|x)

Date时间类

这里是long类型,传递参数要加L

SimpleDateFormat 类

运用:

Calendar概述

Calendar是一个抽象类,不能直接创建对象。

只能这样获取对象

 常用方法

运用:

Zoneld时区

 运用:

Instant时间戳

这些xx就是用来选秒/毫秒/纳秒的

运用:

ZoneDateTime带时区的时间

运用:

 DateTimeFormatter用于时间的格式化和解析

 运用:

LocalDate、LocalTime、LocalDateTime

运用:

LocalDate

 

LocalTime

 

LocalDateTime

Period

用于计算两个“日期”间隔(年、月、日)

Duration

用于计算两个“时间”间隔(秒,纳秒)

ChronoUnit

用于计算两个“日期”间隔

Integer

其他类型同理

常见算法

基本查找

二分查找

分块查找

这些方法都还需要自己写

冒泡排序

先把最大的移动到最右边

选择排序

先把最小的放到最左边

插入排序

直接看例子

递归算法

递归一定要有出口,否则就会出现内存溢出 

快速排序

一定先移动end再移动start

Arrays 

copyOf是从0索引开始,copyOfRange包左不包右

fill不是扩容数组,而是将数组元素全部替换成传入的这个参数

重点讲解最后一个方法:用到了内部类

Lambda表达式

Lambda表达式只能简化函数式接口的匿名内部类的写法
函数式接口:
有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@Functionalinterface注解

参数类型可以省略不写。
如果只有一个参数,参数类型可以省略,同时()也可以省略。
如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,需要同时省略。

按大小排序

通过字符串长度排序,短的在前,长的在后,这里o1、o2为String类型

经典算法题

定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序

要求1:属性有姓名、年龄、身高。
要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序。

有一个很有名的数学逻辑题叫做不死神兔问题,有一对兔子,从出生后第三个月起每个月都生一对兔子小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月的兔子对数为多少? 

找规律: 每个月对数等于上两个月之和

还有爬楼梯问题也是如此

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ ——— 引用的概念以及特性

目录 引用的概念 引用在实际代码中的作用 引用的特性 1. 引用在定义时必须初始化 2. 一个变量可以有多个引用 3. 可以给别名再次取别名,或者多次取别名 4. 引用一旦引用了实体,就不能再引用其他实体了 引用的概念 引用不是新定义一个变量&#x…

Linux-异步IO和存储映射IO

异步IO 在 I/O 多路复用中,进程通过系统调用 select()或 poll()来主动查询文件描述符上是否可以执行 I/O 操作。而在异步 I/O 中,当文件描述符上可以执行 I/O 操作时,进程可以请求内核为自己发送一个信号。之后进程就可以执行任何其它的任务…

嵌入式入门Day23

数据结构Day4 操作受限的线性表栈基本概念顺序栈顺序栈结构创建顺序栈判空和判满栈扩容入栈出栈遍历销毁栈 链式栈队列基本概念顺序队列循环顺序队列定义循环队列的创建循环顺序队列的判空和判满循环顺序队列的入队循环顺序队列的遍历循环顺序队列的出队循环顺序队列的销毁 链式…

C语言实验 一维数组

时间:2024.12.3 一、实验 7-1 交换最小值和最大值 #include<stdio.h> int main() {int n, a[10], i, min = 0, max = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d",&a[i]);}for (i = 0; i < n; i++){if (a[min] > a[i…

聚合支付系统官方个人免签系统三方支付系统稳定安全高并发

系统采用fastadmin框架独立全新开发&#xff0c;安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一-些JD&#xff0c;TB等业务定制&#xff0c;子账号业务逻辑API 非常详细&#xff0c;方便内置对接! 注意&#xff1a;系统没有配置文档很使用教程&#xff0c;不清楚…

HTMLCSS 奇幻森林:小熊的甜蜜蛋糕派对大冒险

这个 HTML 页面包含了一个背景、多个下落的蛋糕图片和一个左右移动的loopy图片,实现了一个小熊吃蛋糕的效果 演示效果 HTML&CSS <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>ideal life</title><style…

电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用

文章目录 前言一. system函数1.1 system函数清理屏幕1.2 system函数暂停运行1.3 system函数电脑关机、重启 二、strcmp函数三、goto语句四、电脑关机小游戏4.1. 程序要求4.2. 游戏代码 总结 前言 今天我们写一点稍微有趣的代码&#xff0c;比如写一个小程序使电脑关机&#xf…

OpenSSL 自建CA 以及颁发证书(网站部署https双向认证)

前言 1、前面写过一篇 阿里云免费ssl证书申请与部署&#xff0c;大家可以去看下 一、openssl 安装说明 1、这部分就不再说了&#xff0c;我使用centos7.9&#xff0c;是自带 openssl的&#xff0c;window的话&#xff0c;要去下载安装 二、CA机构 CA机构&#xff0c;全称为…

在M3上面搭建一套lnmp环境

下载docker-desktop 官网下载docker-desktop 切换镜像源 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docke…

WebSocket 通信说明与基于 ESP-IDF 的 WebSocket 使用

一、 WebSocket 出现的背景 最开始 客户端&#xff08;Client&#xff09; 和 服务器&#xff08;Server&#xff09; 通信使用的是 HTTP 协议&#xff0c;HTTP 协议有一个的缺陷为&#xff1a;通信只能由客户端&#xff08;Client&#xff09;发起。 在一些场景下&#xff0…

linux(centos) 环境部署,安装JDK,docker(mysql, redis,nginx,minio,nacos)

目录 1.安装JDK (非docker)1.1 将文件放在目录下&#xff1a; /usr/local/jdk1.2 解压至当前目录1.3 配置环境变量 2.安装docker2.1 验证centos内核2.2 安装软件工具包2.3 设置yum源2.4 查看仓库中所有docker版本&#xff0c;按需选择安装2.5 安装docker2.6 启动docker 并 开机…

CODESYS可视化秒表分批计时详细制作案例(一)

#制作一个在可视化界面可用于秒表计时的详细案例# 前言: 在电脑和手机的时钟上,都有一个秒表计时的功能。除此之外,在赛事上,也有更为专业的秒表计时器设备。举一反三,那么对于工控设备,为了衡量生产效率和节拍,引入了"Cycle Time(CT)"的概念,我们可以通…

openGauss开源数据库实战十八

文章目录 任务十八 openGauss逻辑结构:构:用户和权眼管理任务目标实施步骤一、准备工作二、用户和角色管理1.使用CREATE USER语句创建用户2.使用CREATE ROLE语句创建用户3.删除用户和角色 三、权限管理1.系统权限清理工作 任务十八 openGauss逻辑结构:构:用户和权眼管理 任务目…

Scratch游戏推荐 | 我的世界:平台冒险——像素世界的全新挑战! ⛏️

&#x1f3ae; Scratch游戏推荐 | 我的世界&#xff1a;平台冒险——像素世界的全新挑战&#xff01; ⛏️&#x1f30d; 今天给大家推荐一款精彩绝伦的Scratch平台冒险游戏——《我的世界&#xff1a;平台冒险 – 第二章》&#xff01;由atomicmagicnumber制作&#xff0c;这…

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…

北斗道路运输车辆管理应用:违规驾驶行为监测、车辆编队管理、安全跟踪(车辆历史轨迹查询)、车辆动态位置数据的实时查看和管理

文章目录 场景概述解决方案应用案例合作构想场景概述 面向旅游大巴车、危险品运输车及重型载货运输车等车辆,利用北斗定位导航服务,结合互联网通信技术,实现车辆安全驾驶管理与调度,有效降低道路事故发生风险,提升道路运输管理水平及车辆调度能力。 解决方案 在车辆上安…

【ABAP——DAILOG_2】

文章目录 使用Tabstrip控件实现分页签效果标签页的修改使用Table Control控件实现表单输出表格控件使用向导创建Table ControlTable Control列的修改 用户通过界面输入数据&#xff0c;数据通过屏幕控件传递到ABAP/4程序中的变量&#xff0c;程序在PBO中准备数据并显示界面&…

资料文件夹转移工具5.2.3 |快速转移到D盘,释放C盘空间

这是一款支持将C盘的常用文件夹转移到其他磁盘分区的工具&#xff0c;提供仅变目录、复制资料和转移资料三种转移方式。该工具完全免费&#xff0c;单文件免安装&#xff0c;大小仅为546KB&#xff0c;非常适合需要释放C盘空间的用户。 大小&#xff1a;546KB 下载地址&#…

使用STM32CubeMX配置串口各种功能

使用STM32CubeMX配置串口各种功能 STM32CubeMX软件的安装接收空闲中断STM32CubeMX配置1.新建工程2. 选择芯片3. 选择时钟和下载方式4. 配置串口5.设置工程消息6.生成代码7.修改生成的代码 空闲中断DMA转运STM32CubeMX配置4.配置串口5.设置工程消息6.生成代码7.修改生成的代码 S…

Javascript中DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)

#如何去实现图片轮播效果图&#xff0c;通过创建一个基本的 HTML 页面结构&#xff0c;包含用于展示轮播图片的区域、左右切换箭头以及放置轮播图片的容器。# 整体架构 一、CSS 样式 接下来创建一个 styles.css 文件来设置页面的样式&#xff0c;让轮播效果看起来更美观。定义…