第十三章 常用类(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…...
 
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
 
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
 
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
 
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
 
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
 
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
 
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
 
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
