第十三章 常用类(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}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325303.shtml

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

相关文章

实体类为什么要用包装类而不用基本类型

eg 基本类型默认为有值的 用包装类不传值得是否默认为空 mybatisplus进行操作时更容易进行是否非空的判断

Asp.Net Core轻量级Aop解决方案:AspectCore

什么是AspectCore Project ? AspectCore Project 是适用于Asp.Net Core 平台的轻量级 Aop(Aspect-oriented programming) 解决方案&#xff0c;它更好的遵循Asp.Net Core的模块化开发理念&#xff0c;使用AspectCore可以更容易构建低耦合、易扩展的Web应用程序。AspectCore使…

指定查找区间,查找学生姓名并显示是否修改成功

首先需要创建两个类&#xff08;面向对象OO的方式实现&#xff09;&#xff1a; 一个是Student&#xff0c;该类主要的代码&#xff1a; String [] names new String [5]; //指定位置查找学生信息public boolean select(int start,int end,String name){boolean flag false;…

去 BAT 面试,总结了这 55 道 MySQL 面试题

转载自 去 BAT 面试&#xff0c;总结了这 55 道 MySQL 面试题 1、一张表&#xff0c;里面有ID自增主键&#xff0c;当insert了17条记录之后&#xff0c;删除了第15,16,17条记录&#xff0c;再把Mysql重启&#xff0c;再insert一条记录&#xff0c;这条记录的ID是18还是15 &am…

使用DotNetty编写跨平台网络通信程序

长久以来,.Net开发人员都非常羡慕Java有Netty这样&#xff0c;高效&#xff0c;稳定又易用的网络通信基础框架。终于微软的Azure团队&#xff0c;使用C#实现的Netty的版本发布。不但使用了C#和.Net平台的技术特点&#xff0c;并且保留了Netty原来绝大部分的编程接口。让我们在使…

Mybatisplus查找数据库中表的策略和id自增策略

默认根据类名向数据库中查找对应的表的名字 加注解自己指定

java中实现客户姓名添加和显示

java中使用带参的方法实现对学生姓名的添加和显示&#xff1a; 首先我们创建一个名为Student类的学生类&#xff0c;由于需要添加多个学生信息&#xff0c;那么我们就先在Student类中声明一个存放学生姓名的数组&#xff1a; String [] names new String[10];然后就是添加学生…

C#码农的大数据之路 - 使用C#编写MR作业

写在前面 从Hadoop出现至今&#xff0c;大数据几乎就是Java平台专属一般。虽然Hadoop或Spark也提供了接口可以与其他语言一起使用&#xff0c;但作为基于JVM运行的框架&#xff0c;Java系语言有着天生优势。而且能找到的与大数据框架如Hadoop等使用介绍的文章也都以Java语言作…

.net Core 生产环境 KestrelServer + Shell 实践

1、背景描述 原项目部署在windwos 服务器下的windwos 服务程序。 2、现已经改版为Linux Centos 下的服务程序。 环境说明&#xff1a; 服务器系统&#xff1a;CentOS 7.0 相关工具&#xff1a;Xshel、Xftp 服务器软件软件&#xff1a;.netcore、 1.安装 CentOS 测试环境…

mysql中ifnull函数

当里面的参数为null时使用第二个参数&#xff0c;否则使用第一个参数

NET Core中使用Irony实现自己的查询语言语法解析器

在之前《在ASP.NET Core中使用Apworks快速开发数据服务》一文的评论部分&#xff0c;.NET大神张善友为我提了个建议&#xff0c;可以使用Compile As a Service的Roslyn为语法解析提供支持。在此非常感激友哥给我的建议&#xff0c;也让我了解了一些Roslyn的知识。使用Roslyn的一…

给你一份超详细 Spring Boot 知识清单

转载自 给你一份超详细 Spring Boot 知识清单 在过去两三年的Spring生态圈&#xff0c;最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷&#xff1a;快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框架的应用&#xff0c;…

MySQL里面的in关键字

里面的类型必须一致&#xff0c;不能使用%等通配符(in类似于&#xff1d;)

6月Unity技术路演华东站报名启动!

2017 Unity技术路演华东区现已正式开启报名&#xff01;2017年3&#xff5e;5月期间&#xff0c;Unity官方技术团队已分别造访华南、西南地区开展为期一天的技术分享&#xff0c;现在华东站&#xff08;上海、南京、杭州&#xff09;已正式启动&#xff0c;在这个夏天&#xff…

mysql中的isnull

where条件中的等于号不能比较空值

使用面向对象(OO)的思想,实现循环输入多个会员的信息,根据会员编号,查找会员积分

先来看一下运行结果&#xff1a; 主要知识点是&#xff1a;对象数组的使用编写软件&#xff1a;Myeclipse 10.5JDK版本&#xff1a;1.7完成时间&#xff1a;25分钟 实现思路&#xff1a; 在会员类中&#xff08;HuiYuan&#xff09;,我们别的事不用干&#xff0c;只需要声明…

应用软件系统程序员的三个立面

这几年工作的重心其实一直没有在代码上&#xff0c;做了很多产品的工作&#xff0c;一直觉得打造一个全面发展的团队一定是我价值所在&#xff0c;所以一直说自己最擅长谈梦想&#xff0c;也确实跟很多人谈了梦想怎么落地、谈了职业规划、孜孜不倦的去聊如何才能踏踏实实的走好…