常用类之Math、Date、SimpleDateFormat、Calendar、Arrays
1.与数学相关的类
(1)Math
//Math类不可再被继承
public final class Math
extends Object
Math类中有两个静态常量:e和pi
//自然对数的基数
public static final double E = 2.7182818284590452354;
//圆周率
public static final double PI = 3.14159265358979323846;
Math类中的方法主要用于数学计算:如绝对值,指数,对数,开平方根,三角运算......
package com.dh.math;
public class MathDemo {
public static void main(String[] args) {
System.out.println("绝对值:"+ Math.abs(-2));
System.out.println("两个值比较大小:"+Math.max(1,2));//还有min
System.out.println("两个值的和:"+Math.addExact(1,2));
System.out.println("角度的余弦值:"+Math.cos(90));//还有sin正弦值
System.out.println("向下取整:"+Math.floor(1.2));
System.out.println("向上取整:"+Math.ceil(1.2));
System.out.println("以e为底的对数计算:"+Math.log(2));
System.out.println("以10为底的对数计算:"+Math.log10(100));
System.out.println("幂运算:"+Math.pow(2,3));
System.out.println("0.0-1.0之间的随机数:"+Math.random());
}
}
结果:
绝对值:2
两个值比较大小:2
两个值的和:3
角度的余弦值:-0.4480736161291701
向下取整:1.0
向上取整:2.0
以e为底的对数计算:0.6931471805599453
以10为底的对数计算:2.0
幂运算:8.0
0.0-1.0之间的随机数:0.35181532356779177
还有更多的方法可查看api文档~
2.与日期相关的类
(1)Date
public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>
使用:
package com.dh.date;
//注意是util包下的
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
//当前时间
Date date = new Date();
System.out.println("当前时间:"+date);
Date date1 = new Date(10000000);//向1970.01.01 00:00:00前进参数(单位为ms)的时间
System.out.println(date1);
}
}
查看api发现很多的方法都弃用了,因为使用Calendar比较多了
(2)SimpleDateFormat
public class DateFormatter
extends InternationalFormatter
可以将Date类型的数据转换成其它格式的String类型
package com.dh.date;
//注意是util包下的
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
//当前时间
Date date = new Date();
System.out.println("当前时间:"+date);
//将当前时间转换成指定格式的字符串
//指定格式为:yyyy-MM-dd:HH:mm:ss(年-月-日:时:分:秒)需严格遵守大小写
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss");
//转换时间为指定的格式,并将数据类型转换为字符串
String formatDate = simpleDateFormat.format(date);
System.out.println(formatDate);
}
}
结果:
当前时间:Sat Jan 23 10:13:21 CST 2021
2021-01-23:10:13:21
(3)Calendar
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>
可以看到Calendar是一个抽象类,不能直接实例化对象。
Calendar中有特别多的静态变量,包括年、月、时、分、秒等等.......(可以用于获取日历中特定的字段),可直接Calendar.属性获取。
常用方法:getTime、setTime(new Date())、get(Calendar.成员变量)、set(Calendar.成员变量,要设置的值)......
package com.dh.date;s
import java.util.Calendar;
import java.util.Date;
public class CalendarDemo {
public static void main(String[] args) {
//Calendar为抽象类,不能直接实例化对象
// Calendar calendar = new Calendar();
//使用方法获得一个Calendar对象
Calendar calendar = Calendar.getInstance(); //使用默认时区和区域设置获取当前时间的日历
//Calendar对象中包含特别多的信息
System.out.println(calendar);
//获取其中的时间信息:相当于new Date()的结果
System.out.println("当前时间:"+calendar.getTime());
//也可以自己设置一个时间
calendar.setTime(new Date());
//使用get()方法获取日历中的字段
System.out.println("年:"+calendar.get(Calendar.YEAR));
//注意:为0-11表示1月-12月,所以要+1
System.out.println("月:"+calendar.get(Calendar.MONTH)+1);
System.out.println("一月中的第几天:"+calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("时:"+calendar.get(Calendar.HOUR));
System.out.println("分:"+calendar.get(Calendar.MINUTE));
System.out.println("秒:"+calendar.get(Calendar.SECOND));
System.out.println("=====================");
//使用set()设置字段
calendar.set(Calendar.YEAR,2022);
//也可以直接指定增加的数值
calendar.add(Calendar.MONTH,2);//月份+2
//等等
//再获取设置之后的值
System.out.println("设置之后的时间:"+calendar.getTime());
System.out.println("年:"+calendar.get(Calendar.YEAR));
System.out.println("月:"+calendar.get(Calendar.MONTH));
}
}
结果:
当前时间:Sat Jan 23 11:07:05 CST 2021
年:2021
月:01
一月中的第几天:23
时:11
分:7
秒:5
=====================
设置之后的时间:Wed Mar 23 11:07:05 CST 2022
年:2022
月:2
3.与数组相关的类
(1)Arrays
Java中有一个数组的工具类,其所有的方法都是static修饰的常量方法,可直接使用Arrays调用,用于操作数组。
最常用的为:
数组排序:sort(数组)
二分查找:binarySearch(数组, 查找的key)
package com.dh.arrays;
import java.util.Arrays;
public class ArraysDemo {
public static void main(String[] args) {
int [] a = {78,22,1,23,99,86,45};
System.out.println("排序前数组:");
//输出排序后的数组
for (int i : a) {
System.out.print(i+"\t");
}
System.out.println();
//数组排序
Arrays.sort(a);
//输出排序后的数组
System.out.println("排序后数组:");
for (int i : a) {
System.out.print(i+"\t");
}
System.out.println();
//二分查找法查找元素
//返回值为所在元素的下标,若不存在该元素则返回-1,可用于判断数组中是否包含某个元素
int key = 23;
int index = Arrays.binarySearch(a, key);
System.out.println("元素"+key+((index == -1)?"不存在":("下标为:"+index)));
}
}
结果:
排序前数组:
78 22 1 23 99 86 45
排序后数组:
1 22 23 45 78 86 99
元素23下标为:2