第十三章 常用类(Math 类、Arrays 类、System类、Biglnteger 和BigDecimal 类、日期类)

news/2025/2/16 4:52:55/

一、Math 类(P481)

Math类包含,用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数

(1)abs:绝对值
(2)pow:求幂

        double pow = Math.pow(2, 4); // 2的4次方System.out.println(pow); // 16.0

(3)ceil:向上取整【返回 >= 该参数的最小整数】

        // ceil 向上取整,返回 >= 该参数的最小整数double ceil1 = Math.ceil(-3.2);double ceil2 = Math.ceil(3.2);System.out.println(ceil1); // -3.0System.out.println(ceil2); // 4.0

(4)floor:向下取整【返回 <= 该参数的最大整数】

(5)round:四舍五入
(6)sqrt:求开方

        double sqrt = Math.sqrt(9.0);System.out.println(sqrt); // 3.0

(7)random:求随机数【返回的是 0 <= x < 1 之间的随机小数】

        double random = Math.random();

请写出获取a-b之间的一个随机整数a,b均为整数?2 <= x <= 7

        double random = 2 + Math.random() * 6;

(8)max:求两个数的最大值
(9)min:求两个数的最小值

二、Arrays 类(P482)

Arrays 里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜索)。

(1)tostring:返回数组的字符串形式
 

        Integer[] arr = {1, 20, 30};System.out.println(Arrays.toString(arr)); // [1, 20, 30]

(2)sort排序:(自然排序和定制排序)

        // 自然排序Integer[] arr = {1, -1, 7, 50};Arrays.sort(arr);System.out.println(Arrays.toString(arr)); // [-1, 1, 7, 50]
        // 定制排序Integer[] arr = {1, -1, 7, 50};// o1 - o2 :升序// o2 - o1 :降序Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}});System.out.println(Arrays.toString(arr)); // [50, 7, 1, -1]

(3)binarySearch:通过二分搜索法进行查找,要求必须排好序的数组

        Integer[] arr = {-1, 1, 7, 50};int index1 = Arrays.binarySearch(arr, 1);System.out.println(index1); // index1 = 1// 如果数组中不存在该元素,就返回 -(low +1)// low 为,如果存在的索引位置int index2 = Arrays.binarySearch(arr, 5); // low:2System.out.println(index2); // index1 = -3

(4)copyOf:数组元素的复制

        Integer[] arr = {-1, 1, 7, 50};int len1 = arr.length - 1;Integer[] newArr1 = Arrays.copyOf(arr, len1); // [-1, 1, 7]System.out.println(Arrays.toString(newArr1));// 如果拷贝长度 > 原数组长度,后面添加 nullint len2 = arr.length + 1;Integer[] newArr2 = Arrays.copyOf(arr, len2); // [-1, 1, 7, 50, null]System.out.println(Arrays.toString(newArr2));// 如果拷贝长度 < 0,抛出异常int len3 = -1;Integer[] newArr3 = Arrays.copyOf(arr, len3); // [-1, 1, 7, 50, null]System.out.println(Arrays.toString(newArr3));

(5)fill:数组元素的填充

        Integer[] arr = {-1, 1, 7, 50};// 用 99 替换原数组所有元素Arrays.fill(arr,99);System.out.println(Arrays.toString(arr)); // [99, 99, 99, 99]

(6)equals:比较两个数组元素内容是否完全一致

        Integer[] arr1 = {-1, 1, 7, 50};Integer[] arr2 = {-1, 1, 7, 50};System.out.println(Arrays.equals(arr1,arr2)); // true

(7)asList:将一组值,转换成ist

        Integer[] arr = {-1, 1, 7, 50};List<Integer> aslist = Arrays.asList(arr);/*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() 完成复制数组

        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);

3)currentTimeMillens:返回当前时间距离1970-1-1的毫秒数
4)gc:运行垃圾回收机制 System.gc();

四、Biglnteger 和 BigDecimal 类(P487)

1)Biglnteger 适合保存比较大的整型
2)BigDecimal 适合保存精度更高的浮点型(小数)

        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:格式和解析日期的类

        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 (Calendarimplements Serializable,Cloneable,Comparable<Calendar>

(1)Calendar类是一个抽象类,并且构造器是 protected。只能通过 getInstance() 来获取实例

(2)它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法

        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包含日期+时间,可以获取日期和时间字段

        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

        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

        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方法可以对当前时间进行加或者减

        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


http://www.ppmy.cn/news/83738.html

相关文章

PCIE总线基本介绍(和PCI总线差异、速率计算、引脚定义)

1、PCI和PCIE的差异 (1)PCIE协议在软件编程上是兼容PCI协议&#xff0c;不同在于PCIE和PCI的控制器&#xff1b; (2)PCIE是差分串行信号线&#xff0c;PCI是电平并行信号线&#xff1b; (3)PCI协议使用INTA#、INTB#、INTC#、INTD#四根中断线来触发终端&#xff0c;PCIE协议没有…

如何查看一个 docker 镜像有哪些版本

如何查看一个 docker 镜像有哪些版本 因为通过 docker search 并不能查看某个镜像的版本信息&#xff0c;如我需要特定版本的 redis 那怎么办呢~ 本文提供了如下几种方式&#xff0c;大家可以分别逐个尝试下~ 为什么有几种方式呢&#xff0c;因为官方的查找镜像网址 Docker H…

如何把数据从 TDengine 2.x 迁移到 3.x ?

一.迁移背景&#xff1a; 随着时序数据库&#xff08;Time Series Database&#xff09; TDengine 3.0 的发布至今&#xff0c;我们除了在持续地优化产品质量的本身&#xff0c;也一直在努力地提升用户体验。但由于 3.0 底层有大量的重构优化&#xff0c;导致开源版的 2.0 用户…

如何在Spring Boot服务端实现公网远程调试并进行HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

什么是SQL Server 审核

IT 安全专业人员需要定期监视和审核 SQL Server 中的所有活动&#xff0c;以确保关键数据的完整性和机密性不会受到损害。手动监视服务器上的所有这些活动是一个忙碌的过程。为了使管理员的工作更轻松一些&#xff0c;Microsoft 提供了 SQL Server 审核功能来帮助管理员有效地审…

第四十二天学习记录:C语言进阶:笔试题整理Ⅲ

问&#xff1a;解释一下int(*a[20])(int)是什么&#xff1f; ChatAI答&#xff1a; int (*a[20])(int) 是一个数组&#xff0c;该数组中每个元素都是一个指向函数的指针&#xff0c;该函数具有一个int类型的参数&#xff0c;并返回一个int类型的值。 具体来说&#xff0c;a是一…

你不知道的useEffect

相信大家在写react时&#xff0c;在项目中使用了大量的useEffect&#xff0c;以至于让我们的代码变得混乱和难以维护。 难道说useEffect这个hook不好吗&#xff1f;并不是这样的&#xff0c;只是我们一直在滥用而已 在这篇文章中&#xff0c;我将展示怎样使用其他方法来代替us…

2222. 迷宫

Powered by:NEFU AB-IN Link 文章目录 2222. 迷宫题意思路代码 2222. 迷宫 题意 摘要&#xff1a;终点为n,n&#xff0c;存在传送门&#xff0c;代价与走动代价相同&#xff0c;均为1&#xff0c;起点不定&#xff0c;求从初始格子走到终点的最短 步数的期望值是多少 思路 两种…