当前位置: 首页 > news >正文

Java(API与算法篇)

常用API和常见算法

前言

常用API

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表达式

经典算法题


前言

接上期文章:Java(面向对象篇)

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

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

常用API

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.jsqmd.com/news/468408/

相关文章:

  • 量化交易策略的运行
  • 蓝桥杯 定时任务
  • 医疗影像分割实战:从原理到代码,全面解析surface-distance评估指标
  • 蓝桥杯 火车运输
  • ArcGIS实战:从XYZ坐标点到等高线的全流程解析
  • OpenVINO模型量化实战:用NNCF搞定PaddleOCR文本检测模型(附完整代码)
  • 为什么消息队列不像数据库那样可以配置读写分离?
  • Halcon 3D视觉实战:从点云预处理到精准定位的完整流程解析
  • 蓝桥杯 最大区间
  • 大端小端检测实战:5分钟用联合体写出CPU字节序测试工具(附结构体对比)
  • 量化交易系统技术方案设计
  • pr 3dmax ae au 达芬奇等各类安装包需要的自提,
  • swift- Swift中常见的面试题
  • Electron-build进阶技巧:利用NSIS脚本实现安装包注册表操作与文件管理
  • TL5000BCJ激光器参数解析与常见应用场景(含线宽与功率优化技巧)
  • Kafka topic 中的 partition 数据倾斜问题
  • 点云配准避坑指南:ICP算法中点到点/面/线的5个实战误区
  • Protobuf编码实战:从TLV到ZigZag,手把手解析二进制流
  • SDC命令实战:get_lib_cells在Design Compiler中的高效查询技巧
  • 智能基座智享未来ep01:openGauss使用指南
  • 我不允许有人不知道 Win11 专业版密钥,简易 Win11 专业版密钥
  • 1.26 PowerBI数据刷新实战:从报错定位到高效修复
  • OGG经典模式下不停机同步新增表的完整流程(含SCN号获取与数据导出导入)
  • 深入解析RTL8111H网络指示灯驱动修改实战
  • 282个企业级skills,108个本体|滴普科技全新升级发布Deepexi企业大模型与DeepexiOS AI级企业操作系统
  • Logisim微程序控制器设计避坑指南:从真值表填写到MIPS CPU完整执行流程
  • Win10/Win11超萌猫咪指针安装指南:从下载到设置一步到位(附免费资源链接)
  • 地瓜派RDK X5部署YOLOv11n避坑指南:从Softmax算子优化到端到端47 FPS实战
  • 避开这两个坑!用Dbeaver查ES数据时遇到的JDBC和License问题实录
  • 32768个Token的魔法:为什么GPT-4突然能记住整本小说?