Math类:用于执行数学计算
PI属性,获取圆周率
random():获得一个0-1之间的随机浮点
floor():向下取整
ceile():向上取整
round():四舍五入
max():最大值
min():最小值
power():获得幂次方
方法可直接在main方法中调用,因为源码写的是static
没有static的修饰的称为实例方法,只有在实例化后才能调用
static是常驻内存,又称为类方法,static只会用于常用类和变量,使用static修饰的数据直接通过“类名.方法名”进行调用,常驻内存的静态方法垃圾回收机制是不会对其进行删除的
例子:
public static void main(System[] args){
//取最大值
int max=Math.max(1,5); //5
//去最小值
int min=Math.min(1,5); //1
//生成随机数0-1
int n=Math.random();
//生成0-9的随机数,对0.0001-9.9999的数进行取整,丢失精度后为0-9
int n=(int)Math.random()*10;
//生成1-6的随机数
int n=((int)Math.random()*6)+1;
//向下取整
int n=Math.floor(10.5); //10
//向上取整
int n=Math.ceil(10.5); //11
//四舍五入
int n=Math.round(10.5); //11
//幂次方:第一个参数是底数,第二个数是幂数
int n=Math.power(2,3); //8
//平方根
int n=Math.sqrt(16); //4
}
BigDecimal:保留几位小数点
在java.math包中,使用要导包,用于封装处理所有的数值类数据并提供数据见的转换功能
setScale(参数1,参数2)
参数2的类型可填:
ROUND_HALF_UP表示四舍五入
ROUND_CEILLING表示向上取整
ROUND_FLOOR表示向下取整
BigDecimal 是类,能对数据处理,但是不能参与计算
BigDecimal bd=new BigDecamal(10.1256);
//能够转为任意类型
int n1=bd.intValue(); //10
double n2=bd.doubleValue(); //10.1256
//对数据进行精度处理
//参数1表示保留的浮点数,参数2表示精度保留的处理模式
//ROUND_HALF_UP表示四舍五入
//ROUND_CEILLING表示向上取整
//ROUND_FLOOR表示向下取整
bd=bd.setScale(2,BigDecimal.ROUND_HALF_UP); //10.13
Date类和Calendar类:
1.两个类型都能描述日期和时间
2.Date主要用于描述时间
3.Calendar主要用于对日期进行访问操作
4.两者可相互转换(通过毫秒值进行转换)
public static void main(System[] args){
//创建Date对象,就是获取当前系统时间
Date date=new Date();
//也可以通过毫秒值创建一个Date对象
Date date=new Date(47285628364923);
//print方法打印时,隐式调用对象的toString方法,所以打印的是对象地址:写不写toString得到的结果是一样的
System.out.println(date.toString);
System.out.println(date);
//获取1970年至当前时间经历的毫秒值
long dateTime=date.getTime();
}
打印日期的时候默认打印的是对象的地址
改变格式打印两种方法:(也是将日期转为字符串的方法)
1.date.toLocalString();
2.SimpleDateFormat类:可将日期按指定格式进行呈现
创建类:SimpleDateFormat sdf=new SimpleDateFormat(String patten1);
使用类:sdf.format(date);
重新应用新的格式规则:sdf.applyPatten(String patten2);
可以通过应用新格式的方式获取单独的时间单位:sdf.applyPatten("MM");
//创建新的日期
Date date=new Date();
//直接打印的是字符串:Wed Apr 29 17:15:56 CST 2020
System.out.println(date);
//改成系统默认的规则进行打印:2020-4-29 17:15:56
System.out.println(date.toLocaleString());
//创建日期格式化类:使日期改成yyyy-MM-dd HH-mm-ss类型
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
//使用格式化类型
String strDate=sdf.format(date);
//结果:2020-04-29 17-15-56
System.out.println(strDate);
//创建应用新的格式
sdf.applyPattern("yyyy年MM月dd日");
//使用格式
String strDate2=sdf.format(date);
//结果:2020年04月29日
System.out.println(strDate2);
//获取单独的月份
sdf.applyPattern("MM");
//使用获取格式
String strDate3=sdf.format(date);
//结果:04
System.out.println(strDate3);
将字符串转为日期的方法:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd") ;
//输入的日期字符串一定要和规定的类型一致才能转换
String strDate="2020-4-29";
try {
//转换类型
Date date=sdf.parse(strDate);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar:日历类
创建日历类就是通过Calendar获取当前系统时间(通过静态方法获得实例):Calendar cal=Calendar.getInstance();
默认打印出的cal是系统默认的字符串:
java.util.GregorianCalendar[time=1588152735940,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=3,WEEK_OF_YEAR=18,WEEK_OF_MONTH=5,DAY_OF_MONTH=29,DAY_OF_YEAR=120,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=32,SECOND=15,MILLISECOND=940,ZONE_OFFSET=28800000,DST_OFFSET=0]
如果需要按照给定的格式进行打印,则需要是Date格式,所以要转换格式:
将Calendar转换为Date格式:
方法一:获取1970年到现在的毫秒值,通过毫秒值封装成为Date类型
方法二:用Date接收用SimpleDateFormat对日期进行格式化
//创建日历类
Calendar cal=Calendar.getInstance();
//直接打印就是一长串字符串
System.out.println(cal);
/****************转换方式一********************/
//获取1970年到cal指定的日期的毫秒值
long timemillis=cal.getTimeInMillis();
//通过毫秒值封装一个Date类型
Date date=new Date(timemillis);
/***************转换方式二*********************/
//用日期类接收日历类的时间
Date date1=cal.getTime();
//结果:Wed Apr 29 18:07:41 CST 2020
System.out.println(date1);
//指定格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate=sdf.format(date1);
//结果:2020-04-29 18:11:01
System.out.println(strDate);
获取时间单位:
//创建日历类
Calendar cal=Calendar.getInstance();
//获取时间单位:参数是feild都可输入静态属性
//获取年份
int year=cal.get(Calendar.YEAR);
//结果2020
System.out.println(year);
//获取月份
int month=cal.get(Calendar.MONTH);
//结果是3(不是4)
System.out.println(month);
//获得24小时
int HH=cal.get(Calendar.HOUR_OF_DAY);
//结果18
System.out.println(HH);
//获得12小时
int hh=cal.get(Calendar.HOUR);
//结果6
System.out.println(hh);
设置时间:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//创建日历类
Calendar cal=Calendar.getInstance();
//set(int feild,int value):单独修改年、月、日
cal.set(Calendar.YEAR,2019);
//将cal转换成Date类型
Date date=cal.getTime();
String strDate=sdf.format(date);
//结果:2019-4-29
System.out.println(strDate);
//set(int year,int month,int day):同时修改年月日
cal.set(2019,1,1);
//将cal转换成Date类型
Date date1=cal.getTime();
String strDate1=sdf.format(date1);
//结果2019-2-1(不是2019-1-1)
System.out.println(strDate1);
对时间进行计算更改:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//创建日历类
Calendar cal=Calendar.getInstance();
//将原始cal转换成Date类型进行打印
Date date0=cal.getTime();
String strDate0=sdf.format(date0);
//原始结果是:2020-04-29 18:41:16
System.out.println(strDate0);
//修改天-7
cal.add(Calendar.DATE,-7);
//将cal转换成Date类型进行打印
Date date=cal.getTime();
String strDate=sdf.format(date);
//结果是:2020-04-22 18:41:16
System.out.println(strDate);
//修改小时+3
cal.add(Calendar.HOUR,3);
//将cal转换成Date类型进行打印
Date date1=cal.getTime();
String strDate1=sdf.format(date1);
//结果是:2020-04-22 21:41:16
System.out.println(strDate1);
//修改月份+10
cal.add(Calendar.MONTH,10);
//将cal转换成Date类型进行打印
Date date2= cal.getTime();
String strDate2=sdf.format(date2);
//结果是:2021-02-22 21:41:16
System.out.println(strDate2);
对时间进行比较:
方法一:通过 时间1.before(时间2) 进行比较
方法二:通过 时间1.compareTo(时间2) 进行比较
//创建时间1
Calendar cal=Calendar.getInstance();
cal.set(2020,3,5);
//创建时间2
Calendar cal2=Calendar.getInstance();
if(cal.before(cal2)){
System.out.println("第一个时间早于第二个时间");
}
else{
System.out.println("第一个时间晚于第二个时间");
}
//创建时间1
Calendar cal=Calendar.getInstance();
cal.set(2020,3,5);
//创建时间2
Calendar cal2=Calendar.getInstance();
//返回int值,1表示晚于参数,-1表示早于参数,0表示时间相同
System.out.println(cal.compareTo(cal2));
Calendar转换为Date:
//创建日历类
Calendar cal=Calendar.getInstance();
//通过获取日历类的毫秒值封装成Date
Date date=new Date(cal.getTimeInMillis());
System.out.println(date);
Date转换为Calendar:
//创建日期类
Date date=new Date();
//创建日历类
Calendar cal=Calendar.getInstance();
//通过日期类设置日历类的值
cal.setTime(date);
System.out.println(cal);