JavaSE学习心得(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表达式

经典算法题


前言

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

教程链接:黑马程序员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.xdnf.cn/news/35093.html

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

相关文章

如何开发高效的企业内训APP?教育培训系统源码搭建实战详解

本篇文章,小编将从教育培训系统的源码搭建、功能设计以及技术实现等方面,详细探讨如何开发一款高效的企业内训APP。 一、企业内训APP的需求分析 在开发企业内训APP之前,首先需要明确其基本需求。一个高效的企业内训APP应该具备以下几个核心…

解释器模式的理解和实践

引言 解释器模式(Interpreter Pattern)是一种行为型设计模式,它在软件工程中用得相对较少,但在某些特定场景下非常有用。解释器模式提供了一种解释语言的语法或表达式的方式,它定义了一个表达式接口,并通过…

Z029 PHP+MYSQL+LW+饭店预订管理系统的设计与实现 源代码 配置 文档

饭店预订管理系统 1.项目描述2. 开发背景与意义3.项目功能结构4.界面展示5.源码获取 1.项目描述 近几年来,我国计算机信息技术发展迅速,各种各样的信息管理系统层出不穷。互联网电子商务的热潮,改变了人们生活习惯,而作为城市经济…

【力扣热题100】—— Day5.回文链表

正视自己的懦弱和无能,克服自己的嫉妒与不甘 —— 24.12.3 234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为 回文链表 。如果是,返回 true ;否则,返回 false 。 示例 1: 输入&#xff1a…

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据? 1.1大数据的类型 1.2大数据的来源 1.3大数据处理的挑战 1.4大数据的核心技术 2.大数据有什么用? 2.1商业与营销: 2.2医疗与健康: 2.3金融服务: 2.4政府与公共服务: 2.5交通…

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境(HBase分布式数据库)的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro,点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型(推荐)”1…

ssh连接工具

我们未来接触到的linux系统一般情况下是没有界面(桌面环境),我们一般会在自己工作的电脑上,通过相关ssh工具,利用网络连接到远程的你的服务器上。连接工具有很多:mobaxterm、xshell/xftp、putty等等 mobaxt…

苹果 ATS 配置SSL证书

Apple的App Transport Security (ATS) 是一项安全机制,旨在确保iOS和macOS应用的网络通信使用HTTPS加密。自iOS 9和OS X 10.11以来,默认情况下所有网络请求都必须使用HTTPS,除非明确允许非HTTPS连接。 在2017年1月1日之前,开发者可…

安卓逆向之对抗Anti-Frida学习

基础补充 什么是 Anti-Frida 保护? Anti-Frida保护是指在移动应用或程序中采用的一种安全技术或防护机制,旨在防止或干扰Frida等动态分析工具的注入与使用。 Anti-Frida保护常见技术 有哪些? 检测frida-agent.so的注入 : Fr…

安全架构评审

安全架构评审 1.概述2.安全设计原则3.美团安全架构评审模型安全需求分析架构review攻击面分析和威胁建模攻击面分析威胁列表 1.概述 完整的安全评审会包含安全架构评审、安全代码审核和安全测试三个手段 安全架构评审聚焦于探寻安全设计中的漏洞,以宏观视野全面考…

迎接国庆,我上线了第一款小程序

最近花了些时间,写了一个 “国庆头像” 小程序。正好快国庆节了,于是分享一下我的这个 “Starstick星点贴纸” 小程序,顺便简单讲讲以及其中的设计、开发、上线过程。 小程序的界面是这样的: 🔮背景 今年中秋前夕&am…

房产销售系统

文末获取源码和万字论文,制作不易,感谢点赞支持。 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不…

开发一套ERP 第二个生产版本

库存管理第一个生产版本 Okay 进入测试 嘿嘿,搞完了,剩下的就是细测慢调了 下一版本可以内置sqlite 数据库来操作这些数据表,sqlite 也支持 trigger 的功能

Weiss 机器人电动夹爪,重塑工业自动化精密操作

在当今的自动化进程里,Weiss高精密电动夹爪扮演着重要的角色。Weiss公司位于德国,其精心研制的高精密电动夹爪专为工业机器人与协作机器人打造。 Weiss 高精密电动夹爪的控制方式独具特色,与传统的一些夹爪相比,Weiss电动夹爪在处…

【JVM虚拟机】面试经典八股文(应届生必看)

目录 1.JDK、JRE、JVM三者关系? 2.谈谈JVM的理解? 3.JVM执行字节码的过程?(执行方式) 4.JVM的组成是什么? 5.什么是类加载机制? 6.什么是双亲委派模型? 7.JVM内存模型 8.堆区的…

Android 实现中英文切换

在开发海外项目的时候,需要实现app内部的中英文切换功能,所有的英文都是内置的,整体思路为: 创建一个sp对象,存储当前系统的语言类型,然后在BaseActivity中对语言进行判断; //公共Activitypubl…

Qt-练习1(事件循环)

一、练习要求 1、使用QT的IO读取文件; 2、以QSlider为基础,写一个进度条,显示文件读取的进度; 3、给QSlider布置qss样式,qss文件像css文件一样,分离出来。 二、源码 全部源码 源码目录: 1.1 、m…

解决Clang 18+不能链接GCC14编译的库的问题

前面笔者的博文MSYS2 MinGW64使用Protobuf新版本踩坑,有提到使用最新的Clang 19.1.4版本在MinGW下无法正常链接使用了Protobuf 28.3的项目,因为MinGW下的项目默认都是使用GCC来编译的,所以如果开发者使用Clang编译器,必然会出现链…

城市内涝监测预警系统解决方案-智慧排水

成因分析 气候变化 受全球气候变暖导致大气水循环加快,环流不稳定性增加,进一步引发极端降雨事件受城市热岛效应、雨岛效应的影响,强降雨常集中于城市且雨量多,强度大且雨量多。 排水系统不完善 城市发展快,城市防洪排涝工程&a…