第十三章 常用类(Math 类、Arrays 类、System类、Biglnteger 和BigDecimal 类、日期类)
一、Math 类(P481)
Math 类包含,用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
(1)abs:绝对值
(2)pow:求幂
(3)ceil:向上取整【返回 >= 该参数的最小整数】
(4)floor:向下取整【返回 <= 该参数的最大整数】
(5)round:四舍五入
(6)sqrt:求开方
(7)random:求随机数【返回的是 0 <= x < 1 之间的随机小数】
(8)max:求两个数的最大值
(9)min:求两个数的最小值
public class Demo {public static void main(String[] args) {// 求幂double pow = Math.pow(2, 4); // 2的4次方System.out.println(pow); // 16.0// ceil 向上取整,返回 >= 该参数的最小整数double ceil1 = Math.ceil(-3.2);double ceil2 = Math.ceil(3.2);System.out.println(ceil1); // -3.0System.out.println(ceil2); // 4.0// sqrt:求开方double sqrt = Math.sqrt(9.0);System.out.println(sqrt); // 3.0// random:求随机数【返回的是 0 <= x < 1 之间的随机小数】double random1 = Math.random();// 请写出获取a-b之间的一个随机整数a,b均为整数?2 <= x <= 7double random2 = 2 + Math.random() * 6;}
}
二、Arrays 类(P482)
Arrays 里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜索)。
(1)tostring:返回数组的字符串形式
(2)sort排序:(自然排序和定制排序)
(3)binarySearch:通过二分搜索法进行查找,要求必须排好序的数组
(4)copyOf:数组元素的复制
(5)fill:数组元素的填充
(6)equals:比较两个数组元素内容是否完全一致
(7)asList:将一组值,转换成ist
public class Demo {public static void main(String[] args) {// tostring:返回数组的字符串形式Integer[] arr1 = {1, 20, 30};System.out.println(Arrays.toString(arr1)); // [1, 20, 30]// sort排序:(自然排序和定制排序)// 自然排序Integer[] arr2 = {1, -1, 7, 50};Arrays.sort(arr2);System.out.println(Arrays.toString(arr2)); // [-1, 1, 7, 50]// 定制排序Integer[] arr3 = {1, -1, 7, 50};// o1 - o2 :升序// o2 - o1 :降序Arrays.sort(arr3, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}});System.out.println(Arrays.toString(arr3)); // [50, 7, 1, -1]// binarySearch:通过二分搜索法进行查找,要求必须排好序的数组Integer[] arr4 = {-1, 1, 7, 50};int index1 = Arrays.binarySearch(arr4, 1);System.out.println(index1); // index1 = 1// 如果数组中不存在该元素,就返回 -(low +1)// low 为,如果存在的索引位置int index2 = Arrays.binarySearch(arr4, 5); // low:2System.out.println(index2); // index1 = -3// copyOf:数组元素的复制4Integer[] arr5 = {-1, 1, 7, 50};int len1 = arr5.length - 1;Integer[] newArr1 = Arrays.copyOf(arr5, len1); // [-1, 1, 7]System.out.println(Arrays.toString(newArr1));// 如果拷贝长度 > 原数组长度,后面添加 nullint len2 = arr5.length + 1;Integer[] newArr2 = Arrays.copyOf(arr5, len2); // [-1, 1, 7, 50, null]System.out.println(Arrays.toString(newArr2));// 如果拷贝长度 < 0,抛出异常int len3 = -1;Integer[] newArr3 = Arrays.copyOf(arr5, len3); // [-1, 1, 7, 50, null]System.out.println(Arrays.toString(newArr3));// fill:数组元素的填充Integer[] arr6 = {-1, 1, 7, 50};// 用 99 替换原数组所有元素Arrays.fill(arr6,99);System.out.println(Arrays.toString(arr6)); // [99, 99, 99, 99]// equals:比较两个数组元素内容是否完全一致Integer[] arr7 = {-1, 1, 7, 50};Integer[] arr8 = {-1, 1, 7, 50};System.out.println(Arrays.equals(arr7,arr8)); // true// asList:将一组值,转换成istInteger[] arr9 = {-1, 1, 7, 50};List<Integer> aslist = Arrays.asList(arr9);/*aslist 运行类型 class java.util.Arrays$ArrayList是 Arrays类的 静态内部类private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable*/System.out.println(aslist.getClass());}
}
三、System类(P486)
(1)exit:退出当前程序
(2)arraycopy:复制数组元素,比较适合底层调用。一般使用 Arrays.copyOf() 完成复制数组
(3)currentTimeMillens:返回当前时间距离1970-1-1的毫秒数
(4)gc:运行垃圾回收机制 System.gc();
public class Demo {public static void main(String[] args) {Integer[] arr = {-1, 1, 7, 50};Integer[] destArr = new Integer[4]; // {0,0,0,0};/*五个参数:参数一:src【源数组】参数二:srcPos【源数组开始拷贝的索引位置】参数三:dest【目标数组】参数四:destPos【目标数组开始拷贝的索引位置】参数五:length【源数组拷贝的数据长度】*/System.arraycopy(arr, 0, destArr, 0, arr.length);}
}
四、Biglnteger 和 BigDecimal 类(P487)
(1)Biglnteger 适合保存比较大的整型
(2)BigDecimal 适合保存精度更高的浮点型(小数)
public class Demo {public static void main(String[] args) {BigInteger bigInteger = new BigInteger("10000");BigDecimal bigDecimal = new BigDecimal("20.88");}
}
1. Biglnteger 和 BigDecimal 常见方法
(1)add加
(2)subtract减
(3)multiply乘
(4)divide除【divide 可以指定精度:BigDecimal.ROUND_CEILING等等】
五、日期类(P488)
1. 第一代日期类 Date
(1)Date:精确到毫秒,代表特定的瞬间
(2)SimpleDateFormat:格式和解析日期的类
public class Demo {public static void main(String[] args) throws ParseException {Date date = new Date(); // 获取当前系统时间System.out.println(date); // Mon Jul 25 20:42:17 CST 2022SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");String format = sdf.format(date);System.out.println(format); // 2022年07月25日 08:42:17 星期一Date parse = sdf.parse(format);System.out.println(parse); // Mon Jul 25 08:42:17 CST 2022}
}
2. 第二代日期类 Calendar (日历)
public abstract class Calendar implements Serializable, Cloneable, Comparable {
(1)Calendar类是一个抽象类,并且构造器是 protected。只能通过 getInstance() 来获取实例
(2)它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
public class Demo {public static void main(String[] args) throws ParseException {Calendar instance = Calendar.getInstance();// 获取日历对象的某个日历字段System.out.println("年:"+instance.get(Calendar.YEAR));System.out.println("月:"+(instance.get(Calendar.MONTH)+1));System.out.println("日:"+instance.get(Calendar.DAY_OF_MONTH));System.out.println("小时(12):"+instance.get(Calendar.HOUR));System.out.println("小时(24):"+instance.get(Calendar.HOUR_OF_DAY));System.out.println("分钟:"+instance.get(Calendar.MINUTE));System.out.println("秒:"+instance.get(Calendar.SECOND));}
}
3. 第三代日期类
3.1 前面两代日期类的不足分析
JDK1.0中包含了一个 java.util.Date 类,但是它的大多数方法已经在JDK1.1引入 Calendar 类之后被弃用了。
而 Calendar 也存在问题是:
(1)可变性:像日期和时间这样的类应该是不可变的
(2)偏移性:Date中的年份是从1900开始的,而月份都从0开始
(3)格式化:格式化只对Date有用,Calendar则不行
(4)此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)。
3.2 第三代日期类常见方法
LocalDate(日期/年月日)、LocalTime(时间/时分秒)、LocalDateTime(日期时间/年月日时分秒)JDK8加入
LocalDate只包含日期,可以获取日期字段
LocalTime只包含时间,可以获取时间字段
LocalDateTime包含日期+时间,可以获取日期和时间字段
public class Demo {public static void main(String[] args) throws ParseException {LocalDateTime now = LocalDateTime.now();LocalDate.now();LocalTime.now();System.out.println(now); // 2022-07-26T00:04:00.395System.out.println(now.getYear()); // 2022System.out.println(now.getMonth()); // JULYSystem.out.println(now.getMonthValue()); // 7System.out.println(now.getDayOfMonth()); // 26System.out.println(now.getHour()); // 0System.out.println(now.getMinute()); // 4System.out.println(now.getSecond()); // 0}
}
3.3 DateTimeFormatter格式日期类
类似于 SimpleDateFormat
public class Demo {public static void main(String[] args) throws ParseException {LocalDateTime now = LocalDateTime.now();System.out.println(now); // 2022-07-26T00:38:30.801DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String format = dtf.format(now);System.out.println(format); // 2022-07-26 00:38:30}
}
3.4 Instant时间戳
类似于 Date
public class Demo {public static void main(String[] args) throws ParseException {Instant now = Instant.now();System.out.println(now); // 2022-07-25T16:43:09.732ZDate date = Date.from(now);Instant instant = date.toInstant();}
}
3.5 第三代日期类更多方法
提供plus和minus方法可以对当前时间进行加或者减
public class Demo {public static void main(String[] args) throws ParseException {LocalDateTime now = LocalDateTime.now();System.out.println(now); // 2022-07-26T00:50:49.265DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");System.out.println(dtf.format(now)); // 2022-07-26 00:50:49// 890 天后LocalDateTime ldt1 = now.plusDays(890);System.out.println(dtf.format(ldt1)); // 2025-01-01 00:50:49// 180 分钟前LocalDateTime ldt2 = now.minusMinutes(180);System.out.println(dtf.format(ldt2)); // 2022-07-25 21:50:49}
}
相关文章:

第十三章 常用类(Math 类、Arrays 类、System类、Biglnteger 和BigDecimal 类、日期类)
一、Math 类(P481) Math 类包含,用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 (1)abs:绝对值 (2)pow:求幂 (3)c…...

2023年12月24日学习总结
今日to do list: 做kaggle上面的流量预测项目☠️ 学习时不刷手机🤡 okkkkkkkkkkkkkk 开始👍🍎 0、我在干什么? 我在预测一个名字叫做elborn基站的下行链路流量,用过去29天的数据预测未来10天的数据 1、…...

第26关 K8s日志收集揭秘:利用Log-pilot收集POD内业务日志文件
------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 OK,到目前为止,我们的服务顺利容器化并上了K8s,同时也能通过外部网络进行请求访问,相关的服务数据也能进行持久化存储了,那么接下来…...
芯科科技以卓越的企业发展和杰出的产品创新获得多项殊荣
2023年共获颁全球及囯內近20个行业奖项 Silicon Labs(亦称“芯科科技”)日前在全球半导体联盟(Global Semiconductor Alliance,GSA)举行的颁奖典礼上,再次荣获最受尊敬上市半导体企业奖,这是公…...

计算机视觉基础(11)——语义分割和实例分割
前言 在这节课,我们将学习语义分割和实例分割。在语义分割中,我们需要重点掌握语义分割的概念、常用数据集、评价指标(IoU)以及经典的语义分割方法(Deeplab系列);在实例分割中,需要知…...
CNAS中兴新支点——什么是软件压力测试?软件压力测试工具和流程
一、含义:软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,以及在高峰期或…...

jQuery: 整理3---操作元素的内容
1.html("内容") ->设置元素的内容,包含html标签(非表单元素) <div id"html1"></div><div id"html2"></div>$("#html1").html("<h2>上海</h2>") …...
22、商城系统(四):项目jar包配置(重要),网关配置,商品服务基础数据设置
目录 0.重要:整个项目的配置 最外层的pom.xml renren-fast renren-generator xpmall-common xpmall-coupon...
循环链表的学习以及问题汇总
[TOC](循环链表常见的问题) # 问题一: **报错**  **报错原因:**因为没有提前对_tag_CircleListNode重命名为CircleListNode,所以,在定义…...
C++期末复习总结继承
继承是软件复用的一种形式,他是在现有类的基础上建立新类,新类继承了现有类的属性和方法,并且还拥有了其特有的属性和方法,继承的过程称为派生,新建的类称为派生类(子类),原有的成为…...

CloudCanal x Debezium 打造实时数据流动新范式
简述 Debezium 是一个开源的数据订阅工具,主要功能为捕获数据库变更事件发送到 Kafka。 CloudCanal 近期实现了从 Kafka 消费 Debezium 格式数据,将其 同步到 StarRocks、Doris、Elasticsearch、MongoDB、ClickHouse 等 12 种数据库和数仓,…...
Nodejs+Express搭建HTTPS服务
最近开发需要搭建一个https的服务,正好最近在用nodejs和express,于是乎想到就近就使用这两东西来搭建一个https的服务吧。这里搭建过程总共需要两步,第一步生成证书,第二步使用https模块启动服务。 生成自签名证书 这里因为是自…...
设计模式之-策略模式,快速掌握策略模式,通俗易懂的讲解策略模式以及它的使用场景
系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用…...

【leetcode100-019】【矩阵】螺旋矩阵
【题干】 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 【思路】 不难注意到,每进行一次转向,都有一行/列被输出(并失效);既然已经失效,那我…...

【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型
温故而知新,可以为师矣! 一、参考资料 《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman. 二、针孔模型相关介绍 1. 重要概念 1.1 投影中心/摄像机中心/光心 投影中心称为摄像机中心,也称为光心。投影中心位于一…...
轻量级Python IDE使用(三)——函数
1、函数 1.1、函数的概述 在程序设计中,函数的使用可以提升代码的复用率和可维护性。 系统内建函数pow()进行幂运算: a pow(2,4)自定义函数func() def func(a,b):return a ** b afunc(2,4) print(a)自定义函数func(),功能是输出a的b次幂 1.2、函数的定义 py…...

计算机图形学理论(3):着色器编程
本系列根据国外一个图形小哥的讲解为本,整合互联网的一些资料,结合自己的一些理解。 CPU vs GPU CPU支持: 快速缓存分支适应性高性能 GPU支持: 多个 ALU快速板载内存并行任务的高吞吐量(在每个片段、顶点上执行着色…...

ubuntu20.04安装timeshift最新方法
总结: 现在可以使用如下代码安装 sudo apt-get update sudo apt-get install timeshift原因: 在尝试Timeshift系统备份与还原中的方法时, sudo apt-add-repository -y ppa:teejee2008/ppa运行失败。 更改为以下代码: sudo a…...

小狐狸ChatGPT付费创作系统小程序端开发工具提示打开显示无法打开页面解决办法
最新版2.6.7版下载:https://download.csdn.net/download/mo3408/88656497 很多会员在上传小程序前端时经常出现首页无法打开的情况,错误提示无法打开该页面,不支持打开,这种问题其实就是权限问题,页面是通过调用web-v…...

DQL-基本查询
概念: 1,数据库管理系统一个重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示 2,MySQL提供了功能强大、灵活的语句来实现这些操作 3…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
嵌入式面试常问问题
以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...
用js实现常见排序算法
以下是几种常见排序算法的 JS实现,包括选择排序、冒泡排序、插入排序、快速排序和归并排序,以及每种算法的特点和复杂度分析 1. 选择排序(Selection Sort) 核心思想:每次从未排序部分选择最小元素,与未排…...

VSCode 没有添加Windows右键菜单
关键字:VSCode;Windows右键菜单;注册表。 文章目录 前言一、工程环境二、配置流程1.右键文件打开2.右键文件夹打开3.右键空白处打开文件夹 三、测试总结 前言 安装 VSCode 时没有注意,实际使用的时候发现 VSCode 在 Windows 菜单栏…...