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

news2024/12/22 22:56:23

一、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.0
        System.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>() {
            @Override
            public 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:2
        System.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));

        // 如果拷贝长度 > 原数组长度,后面添加 null
        int 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 2022

        SimpleDateFormat 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.395

        System.out.println(now.getYear()); // 2022
        System.out.println(now.getMonth()); // JULY
        System.out.println(now.getMonthValue()); // 7
        System.out.println(now.getDayOfMonth()); // 26
        System.out.println(now.getHour()); // 0
        System.out.println(now.getMinute()); // 4
        System.out.println(now.getSecond()); // 0

3.3  DateTimeFormatter格式日期类

类似于 SimpleDateFormat

        LocalDateTime now = LocalDateTime.now();
        System.out.println(now); // 2022-07-26T00:38:30.801

        DateTimeFormatter 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.732Z

        Date 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.265

        DateTimeFormatter 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.coloradmin.cn/o/568607.html

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

相关文章

520 | ChatGPT会是一个完美情人吗?

A GENERATIVE AI EXPERIMENT 机器人能感受到爱吗&#xff1f;这个困扰了科学家们多年的未解之谜&#xff0c;如今随着ChatGPT的爆火再次回到人们的视线中。虽然我们尚未准备好为机器赋予情感&#xff0c;但机器已经可以借助生成式AI来帮助人类表达自己的情感。 自然情感表达 …

网络原理(七):http 协议(下)

上一章只是谈到了http 中的几个header属性&#xff1a; Host &#xff1a; 域名端口号Content-Length &#xff1a;表示 body 中的数据长度Content-type &#xff1a;表示 body 中的数据格式。User-Agent &#xff1a;表示浏览器/操作系统的属性。Referer &#xff1a; 表示这…

三年的功能测试,让我女朋友跑了,太难受了...

简单概括一下 先说一下自己的情况&#xff0c;普通本科&#xff0c;18年通过校招进入深圳某软件公司&#xff0c;干了3年多的功能测试&#xff0c;21年的那会&#xff0c;因为大环境不好&#xff0c;我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;我感觉自己不…

Spring之DI(依赖注入)

依赖注入&#xff08;DI&#xff09;是一个过程&#xff0c;在这个过程中&#xff0c;对象仅通过构造函数参数、工厂方法的参数或在对象被实例化后通过属性设置来定义它们的依赖项&#xff08;即与该对象一起工作的其他对象&#xff09;。然后&#xff0c;容器在创建 bean 时注…

【网络】无线路由器和路由器的配置方法

目录 &#x1f352;常见的接入互联网方式 &#x1f353;WAN配置 &#x1f353;LAN口配置 &#x1f353;WLAN配置 &#x1f353;WLAN安全 &#x1f352;路由设备管理 &#x1f353;路由器内部组件 &#x1f353;Cisco路由器的启动过程 &#x1f353;基础命令 &#x1f34e;show …

【中间件漏洞】apache未知扩展名解析漏洞、addhandler导致的解析漏洞、换行解析漏洞(CVE-2017-15715)

目录 apache未知扩展名解析漏洞 漏洞复现 防范建议 AddHandler导致的解析漏洞 防范建议 Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09; 漏洞复现 防范建议 apache未知扩展名解析漏洞 Apache默认一个文件可以有多个以点分割的后缀&#xff0c;当最右边的后缀…

C#入门:编写运行第一个C#程序Helloworld

参考链接&#xff1a; C#入门学习-希里安 下载安装Visual Studio&#xff0c;创建项目 在官网下载安装Professional 2022即可. https://visualstudio.microsoft.com/zh-hans/ 下载时选择C#、.Net框架等支持&#xff0c;安装后运行&#xff0c;新建模板选择 Visual C#、Windo…

es集群配置与实际演示

es集群配置与实际演示 1》单服务器多节点部署一、准备环境二、安装jdk三、ElasticSearch部署四、实际演示 2》多台服务器集群部署一、准备环境二、安装jdk三、ElasticSearch部署四、实际演示五、密码及集群认证六、其他 集群分类&#xff1a; ES多节点集群分为两种&#xff0c;…

档案馆中温湿度要求的数据 资料分享

5.1 温度和湿度要求 5.1.1 档案馆各区域温度和湿度(本文件所指湿度为相对湿度,下同)设计应符合JGJ25—2010的规定。 5.1.2 档案库房温度和湿度应符合表1的要求。档案库房应维持温度和湿度相对稳定&#xff0c;温度日较差≤2 ℃,湿度日较差≤5%。温度和湿度取值应充分考虑设备…

Android 之MPAndroidChart图表案例

一 简介 1.1 图表用于直观的分析数据的分布情况&#xff0c;用于对比数据的大小和趋势。 1.2 图表的类型也非常多&#xff0c;常见的有折线&#xff0c;柱状&#xff0c;饼状&#xff0c;其它的有面积&#xff0c;散点&#xff0c;股价&#xff0c;雷达&#xff0c;仪表盘&am…

企业该如何自主构建信息化管理系统?

实践证明&#xff0c;企业自己搭建的信息化系统灵活性更高&#xff0c;更能契合企业的需求。 我们可以借助零代码平台自主搭建&#xff0c;既提供了各个应用系统的标准化功能&#xff0c;又支持自定义搭建&#xff0c;可根据企业自身需求修改。 全球领先的信息技术研究和顾问公…

【Servlet API详解】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. HttpServlet类 2. HttpServletRequest 2.…

【JUC基础】10. Atomic原子类

1、什么是Atomic Atomic英译为原子的。原子结构通常称为不可分割的最小单位。而在JUC中&#xff0c;java.util.concurrent.atomic 包是 Java 并发库中的一个包&#xff0c;提供了原子操作的支持。它包含了一些原子类&#xff0c;用于在多线程环境下进行线程安全的原子操作。使…

Apache Doris

Apache Doris教程 1.Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c; 更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;…

一次简单的问题排查背后蕴含的巨大的知识量

现象 所有的请求都卡住。堆dump正常。有一段时间内存占用高&#xff0c;GC频繁且耗时长&#xff0c;过了那段时间后监控上恢复正常。日志有OutOfMemory的异常 结论 在这段代码OOM之前&#xff0c;它会导致JVM不停 fullGC 与 stopWorld&#xff0c;从而导致了程序卡死。&#…

【Linux】线程同步/生产消费模型/线程池/读写锁

目录 1.Linux线程同步 1.1.条件变量 1.1.1.同步概念与竞态条件 1.1.2.条件变量函数 初始化和销毁 1.1.3.等待条件满足 1.1.5.为什么 pthread_cond_wait 需要互斥量? 1.1.6.条件变量使用规范 2.生产者消费者模型 2.1.模型概念 2.2.模型优点 2.3.基于Blocking Queue的…

[入门必看]数据结构6.1:图的基本概念

[入门必看]数据结构6.1&#xff1a;图的基本概念 第六章 图6.1 图的基本概念知识总览6.1.1 图的基本概念 6.1.1 图的基本概念图的定义图逻辑结构的应用无向图、有向图简单图、多重图顶点的度、入度、出度顶点-顶点的关系描述连通图、强连通图研究图的局部——子图连通分量强连通…

西门子物联网网关 IOT2050 杭州乐芯生态合作版 LX-IOT2050

西门子物联网网关 IOT2050 乐芯生态合作版 LX-IOT2050 •基于 IOT2050 硬件基础上安装了乐芯科技数据采集引擎&#xff0c; 提供开箱即用的物联网解决方案。 •硬件&#xff1a;基于西门子工业的高品质硬件&#xff0c;完善的国际认证资质 &#xff0c; 欧盟CE、UL、CCC认证。…

零基础小白怎么入门网络安全(黑客)?看这篇就够啦

前言 我刚入门网络安全&#xff0c;该怎么学&#xff1f;要学哪些东西&#xff1f;有哪些方向&#xff1f;怎么选&#xff1f; 不同于Java、C/C等后端开发岗位有非常明晰的学习路线&#xff0c;网路安全更多是靠自己摸索&#xff0c;要学的东西又杂又多&#xff0c;难成体系。…

会话跟踪cookie和session

什么是会话跟踪技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可能包含多次请求和响应。 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需…