前言
Java类库中有许多实用的类库,主要了解下面一些常用类库。
一、Math类
Math类中提供了许多静态方法,可直接调用,调用形式如:
Math.数学方法
Math类主要有以下几个常用方法。
1.随机数方法
- random()方法:用于产生一个double型随机数字,范围在[0.0,1.0)之间。
- 举例:根据用户提供的两个整数参数返回两个参数之间的任意整数
public class Example4_9 {
public static void main(String[] args) {
int small = Integer.parseInt(args[0]);//将输入的字符串转化为整型
int big = Integer.parseInt(args[1]);//将输入的整数字符串转化为中整型
if (small > big) {//保证small存小值,big存大值
int temp = small;
small = big;
big = temp;
}
int r = (int) Math.random() * (big-small) + small;//强制转换的格式:(类型名)表达式
System.out.println(r);//使用快捷键sout
}
}
2.最大值、最小值、绝对值方法
- 方法名
max(a,b); //求a、b两者最大
min(a,b); //求a、b两者最小
abs(a); //求a的绝对值
- 以上3个方法的参数类型可以是多种数值类型
- 应用
public class Example4_9 {
public static void main(String[] args) {
int small = Integer.parseInt(args[0]);//将输入的字符串转化为整型
int big = Integer.parseInt(args[1]);//将输入的整数字符串转化为中整型
if (small > big) {//保证small存小值,big存大值
int temp = small;
small = big;
big = temp;
}
int r = (int) Math.random() * (big-small) + small;//强制转换的格式:(类型名)表达式
System.out.println(r);
System.out.println(Math.max(small,big));//最大
System.out.println(Math.min(small,big));//最小
System.out.println(Math.abs(small-big));//绝对值
}
}
输入1,2,输出:
1
2
1
1
3.取整数方法
- 方法名
double ceil(double a);//返回大于等于参数a的最小整数
double floor(double a);//返回小于等于参数a的最大整数
double rint(double a);//返回与参数a最接近的整数,偶数优先
4.指数方法
- 方法名
double exp(double a);//返回e的a次方
double sqrt(double a);//返回a的平方根
double pow(double a,double b);//返回a的b次方
二、Random类
1.Random类的两种构造方法
- 定义:Random类在java.util包中,在指定的范围内随机产生数字
- 构造方法:
Random(long seed); //有参构造,如果传入的数据相同,不同对象可产生相同的随机数
Random(); //无参构造,对于每次对象创建的随机数不同
2.Random类的常用方法
前面的Math类中的random()方法只产生double型的随机数,而在Radom类中提供多种方法获取不同数据类型的随机数,具体可查看API文档,已多次推荐,非常好用,适合新手。
举个例子说明方法:
public class Example4_11 {
public static void main(String[] args) {
Random r1 = new Random();//使用无参构造对象
System.out.println(r1.nextFloat());//产生0.0~1.0间的float类型的值
System.out.println(r1.nextDouble());//产生0.0~1.0间的double类型的值
System.out.println(r1.nextInt());//产生0.0~1.0间的int类型的值
System.out.println(r1.nextInt(10));//产生[0,10)间的int类型的值
Random r2 = new Random(6);//使用有参构造对象,若参数相同,产生随机数相同
Random r3 = new Random(6);//使用有参构造对象,若参数相同,产生随机数相同
System.out.println(r2.nextInt() == r3.nextInt());
}
}
输出:
0.0070629716
0.9097006612923648
-1061980360
0
true
三、日期时间类
java.util类中:Date类和Calendar类,用来处理日期、时间等操作。
1.Date类
- Date类是Java中表示表示特定时间的类,精确到毫秒
- Date类的构造方法:
public Date(); //根据当前的默认毫秒值创建日期对象
public Date(long date);//根据给定的毫秒值创建日期对象,date从1970年1月1日起的毫秒数
- Date类的成员方法:
public long getTime();//获取时间,以毫秒为单位,获取的毫秒值是从1970年上午8时到当前经过的毫秒值
public void setTime(long time);//设置时间
2.SimpleDateFormat类
- SimpleDateFormat类是DateFormat类的子类,可用来完成日期和文本之间的转换, 即把系统时间转化为不同的格式的字符串输出到界面,通常与Date类、Calendar类搭配使用,格式有如:
<item>yyyy-MM-dd HH:mm:ss.SSS</item> //1970-01-01 08:00:00.000
<item>yyyy/MM/dd HH:mm:ss.SSS</item> //1970/01/01 08:00:00.000
<item>MM-dd-yyyy HH:mm:ss.SSS</item> //01-01-1970 08:00:00.000
<item>MM/dd/yyyy HH:mm:ss.SSS</item> //01/01/1970 08:00:00.000
<item>dd-MM-yyyy HH:mm:ss.SSS</item> //01-01-1970 08:00:00.000
<item>dd/MM/yyyy HH:mm:ss.SSS</item> //01-01-1970 08:00:00.000
- SimpleDateFormat类的构造方法:
SimpleDateFormat(String pattern);//用给定的模式和默认语言环境的日期格式构造格式对象
- SimpleDateFormat类的成员方法
String format(Date date);//将一个Date格式转化为日期时间字符串
Date parse(String source) throws ParseException;//从给定字符串开始解析文本生成一个日期
- 用法:按照指定格式输出当前日期
public class Example4_12 {
public static void main(String[] args){
//转换日期时间格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = new Date();//获取当前系统日期毫秒数
String str = simpleDateFormat.format(date);//将当前日期转换为字符串格式样的字符串
System.out.println(str);//输出此类数字
System.out.println(date);//输出真实时间
try {
date = simpleDateFormat.parse("2000-12-12 12:12:12:120");//将给定的字符串解析为日期样式
} catch (ParseException e) {
}
System.out.println(date);//输出字符串被解析后的日期
}
输出结果:
2021-07-23 10:42:29.268
Fri Jul 23 10:42:29 CST 2021
Fri Jul 23 10:42:29 CST 2021
3.Calendar类
- 定义:抽象类,获取日期和时间时考虑了时区问题
- 抽象类不能被实例化,需要调用静态方法getInstance()来创建Calendar对象后才能调用其它该类的其它方法:
Calendar calendar = Calendar.getInstance(); //创建一个代表系统当前日期的Calendar 对象
- 类变量:
Calendar.YEAR; //年
Calendar.MONTH; //月 ,从0开始
Calendar.DAY_OF_MONTH; //日
Calendar.HOUR; //小时
Calendar.MINUTE; //分钟
Calendar.SECOND; //秒
Calendar.MILLISECOND; //毫秒
- 成员方法:
成员方法中的field参数一般是Calendar类的字段
public void set(int year, int month, int date); // 设置Calendar对象的年月日时分秒字段
public void set(int field, int value); //给指定的Calendar字段赋值
public void get(int field); //返回给定日历的值
abstract public void add(int field, int amount); //给给定字段添加或减去指定的时间量
4.GregorianCalendar类
- 定义:是Calendar类的一个子类,提供世界大多数国家使用的标准日历系统,继承自Calendar类
- 实例化对象语法如下:
GregorianCalendar gregorianCalendar = new GregorianCalendar(); //创建一个代表当前日期的GregorianCalendar对象
- Calendar类以及GregorianCalendar类用法示例
- 用法:
/**
* @Author: qp
* @Time: 2021/7/22 21:07
* @Description
*/
public class Example4_12 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,2020);
calendar.add(Calendar.YEAR,1);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));//从0开始,7月份输出数字6
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
calendar.set(2021,6,23,14,10,00);//设置当前时间为2021-7-23 14:10:00
System.out.println(calendar.getTime());//获取设置的系统时间,精确到秒
GregorianCalendar gregorianCalendar = new GregorianCalendar(2021,6,23);
System.out.println(gregorianCalendar.getTime());//获取设置系统时间,精确到秒
int year = gregorianCalendar.get(GregorianCalendar.YEAR);
System.out.println(year+"是闰年吗?"+gregorianCalendar.isLeapYear(year));//判断当前系统年份是否是闰年
}
}
输出结果为:
2021
6
23
Fri Jul 23 14:10:00 CST 2021
Fri Jul 23 00:00:00 CST 2021
2021是闰年吗?false
5.其它时间类
- 定义:Java8中新增了一个Java.time包,该包中包含更多的时间操作类
- 常用时间操作类:
- 用法
/**
* @Author: qp
* @Time: 2021/7/23 14:46
* @Description
*/
public class Example4_13 {
public static void main(String[] args) {
//获取当前Clock
Clock clock = Clock.systemUTC();
System.out.println("获取的标准时间" + clock.instant());
System.out.println("获取到的毫秒数" + clock.millis());
//Duration
Duration duration = Duration.ofDays(1);
System.out.println("一天有" + duration.toHours() + "小时");
System.out.println("一天有" + duration.toMinutes() + "分钟");
//LocalDate
LocalDate localDate = LocalDate.now();
System.out.println("当前日期是:" + localDate);
//LocalTime
LocalTime localTime = LocalTime.now();
System.out.println("当前时间是:" + localTime);//精确到毫秒
//LocalDateTime
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间是:" + localDateTime);//精确到毫秒
//当前日期时间加上1天1小时10分
LocalDateTime localDateTime1 = localDateTime.plusDays(1).plusHours(1).plusMinutes(10);
System.out.println("当前日期时间加上1天1小时10分" + localDateTime1);
//获取年份、月份、月份和日期
System.out.println("当前年份:" + Year.now());
System.out.println("当前月份:" + Month.JULY);
System.out.println("当前月份和日期:" + MonthDay.now());
//DayOfWeek
System.out.println(DayOfWeek.MONDAY);
System.out.println(DayOfWeek.THURSDAY);
//ZoneId
ZoneId zoneId=ZoneId.systemDefault();
System.out.println("当前时区是"+zoneId);
}
}