Java基础知识每日总结(17)---Java常用工具类

常用工具类

程序开发经常需要一些算法,例如提取当前系统日期、生成不重复的随机数字、对数字和日期的格式化输出、还有一些数学函数的运算等,这些都是程序开发中不可避免要使用的技术。这里介绍一些常用的工具类。

1.日期时间类
Date类用于表示日期时间,它位于java.util包中。
①创建Date类的对象
Date类最简单的构造方法就是默认的无参数的Date()构造方法,它使用系统中当前日期和时间创建并初始化Date类的实例对象。例,Date now=new Date();
Date类的另一个够构造方法是Date(long date),这个构造方法接收一个long类型的整数来初始化Date对象,这个long类型的整数是标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00)开始的毫秒数。很多和日期时间有关的类都能够转换为long类型整数。System类的currentTimeMillis()方法可以获取系统当前时间距历元的毫秒数。例,

long timeMillis=System.currentTimeMillis();
Date date =new Date(timeMillis);

②比较Date对象
after()方法:
该方法用于测试此日期对象是否在指定日期之后。

方法声明:public boolean after(Date when)

参数说明:when是要比较的日期对象。当且仅当此Date对象表示的时间比when表示的时间晚,才返回true;否则返回false。

before()方法:
该方法用于测试此日期对象是否在指定日期之前,它和after()方法正好相反。

方法声明:public boolean before(Date when)

参数说明:when是要比较的日期对象。当此Date对象表示的时间比when表示的时间早,才返回true;否则返回false。

compareTo()方法:
该方法用于比较两个日期对象的顺序,该方法常用于多个Date对象的排序。

方法声明:public int compareTo(Date anotherDate)

参数说明:anotherDate是要比较的其他日期对象。
如果参数anotherDate表示的时间等于当前Date对象表示的时间,该方法返回值为0;如果当前Date对象表示的时间在anotherDate参数表示的时间之前,则返回小于0的值;如果当前Date对象在anotherDate参数表示的时间之后,则返回大于0的值。

③更改Date对象
getTime()方法:
getTime()方法返回自1970年1月1日00:00:00 GMT以来,此Date对象表示的毫秒数。

方法声明:public long getTime()

setTime()方法:
setTime()方法用于设置此Date对象,以表示1970年1月1日00:00:00 GMT以后time毫秒的时间点。

方法声明:public void setTime(long time)

参数说明:time是毫秒数。

④日期的格式化输出
在应用程序设计中,经常会需要显示时间和日期。String类的静态format()方法通过特殊转义符作为参数可以实现对日期和时间的格式化。format()方法用于创建格式化的字符串。它有两种重载形式。

方法声明:format(String format,Object…args)

参数说明:format是格式字符串。args是格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。此参数的数目是可变的,可以为0。该方法使用指定的格式字符串和参数返回一个格式化字符串。格式化后的新字符串使用本地默认的语言环境。

方法声明:format(Local local,String format,Object…args)

参数说明:local是格式化过程中要应用的语言环境。如果l为null,则不进行本地化。format是格式字符串。args是格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。参数的数目是可变的,可以为0。

日期格式化:
对于日期的格式化,可以使用转义符,把Date类的实例对象格式化。例,返回年月日中的月:

Date date=new Date();
String day=String.format("%tb", date);  //结果为七月

“%tb”是转换符,常用的日期和时间的格式转换符:
Java基础知识每日总结(17)---Java常用工具类_第1张图片

时间格式化:
使用format()方法不但可以完成日期的格式化,也可实现时间的格式化。时间格式化转换符要比日期转换符种类要更多、更精确。它可以将时间格式化成时、分、秒、毫秒,格式化时间的转换符:
Java基础知识每日总结(17)---Java常用工具类_第2张图片
格式化常见的日期时间组合:
格式化日期与时间的转换符定义了各种格式日期字符串的方式,其中最常用的日期和时间的组合格式:
Java基础知识每日总结(17)---Java常用工具类_第3张图片

2.数学运算
在Java语言中提供了一个执行数学基本运算的Math类,这个类包括常见有用的数学运算方法,这些方法包括三角函数方法、指数函数方法、对数函数方法、平方根函数方法等一些常用数学函数,除此之外该类还提供了一些常用的数学常量,例如PI、E等。
①Math类
Math类包含了所有用于数学运算的函数方法,主要包括三角函数方法、指数函数方法、取整函数方法、取最大值、最小值以及平均值函数方法,这些方法都是静态的,所以每个方法只要使用“Math.数学方法”就可以调用。
在Math类中除了函数方法之外还存在一些常用数学常量,比如圆周率、E等,这些数学常量作为Math类的成员变量出现,可以使用“Math.变量名”调用。

②Math类的数学方法
三角函数方法:
在Math类中包含的三角函数方法:
Java基础知识每日总结(17)---Java常用工具类_第4张图片
以上每个方法的参数和返回值都为double型的,参数以弧度代替角度来实现,其中1度等于π/180弧度,但值得注意的是,角度与弧度的互换通常是不精确的。

指数函数方法:
在Math类中存在与指数相关的函数方法:
Java基础知识每日总结(17)---Java常用工具类_第5张图片

取整函数方法:
Java基础知识每日总结(17)---Java常用工具类_第6张图片
上述round方法的说明请以具体API文档为主。

取最大值、最小值、绝对值函数方法:
Java基础知识每日总结(17)---Java常用工具类_第7张图片

3.随机数
在Java中主要提供两种方式产生随机数,分别为调用Math类的random()方法和Random类提供的产生各种数据类型随机数的方法。
①通过Math类生成随机数
在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小于1.0的double型随机数,即0 <= Math.random() < 1.0,虽然Math.random()方法只可以产生0~1的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数,例,
Java基础知识每日总结(17)---Java常用工具类_第8张图片
使用Math类的random()方法也可以随机生成字符,例,可以使用如下代码生成字符’a’~’z’的字符:(char)('a'+Math.random()*('z'-'a'+1));
通过上述表达式可以求出更多的随机字符,比如’A’~’Z’的随机,进而可以推理到求任意两个字符之间的随机字符,可以使用如下语句:(char)(cha1+Math.random()*(cha2-cha1+1));
注:random()方法返回的值实际上是伪随机数,它通过复杂的运算而得到一系列的数,该方法是通过当前时间作为随机数生成器的参数,所以每次执行程序都会产生不同的随机数。

②使用Random类生成随机数
在Java中还提供了一种可以获取随机数的方式,即java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。
方法声明:public Random();
以这种形式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间不可能相同,所以产生的随机数将不同,但是如果运行速度太快,也会产生两次运行结果相同的随机数。
方法声明:public Random(seedValue);
参数说明:seedValue是随机数生成器的种子。

在Random类中提供获取各种数据类型随机数的方法:
Java基础知识每日总结(17)---Java常用工具类_第9张图片
4.数字格式化类
Java主要对浮点型数据进行数字格式化操作,其中浮点型数据包括double型和float型数据,在Java中使用java.text.DecimalFormat类格式化数字。
DecimalFormat类:
在Java中对没有格式化的数据遵循以下原则:

  • 如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式表示
  • 如果数据绝对值小于0.001或者大于10000000,使用科学技术法表示

DecimalFormat是NumberFormat的一个子类,用于格式化十进制数字,它可以将一些数字格式化为整数、浮点数、科学计数法、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。一般情况下可以实例化DecimalFormat对象时传递数字格式,也可以通过DecimalFormat类中的applyPattern()方法来实现数字格式化。
当格式化数字时,在DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定特殊字符规则进行匹配,下图列举了定义格式化模板中的特殊字符及其代表含义:
Java基础知识每日总结(17)---Java常用工具类_第10张图片

你可能感兴趣的:(CoreJava)