一、java.lang.Math
java.lang.Math底层封装了很多与数学相关的属性和方法,使用它可以在一定基础上避免程序员自行研发数学方面的代码。
1、Math的两个属性:
①圆周率PI ② 科学计数法E
都是静态常量,可以直接用Math.调用。
2、Math的方法:
1、 Math.abs() :绝对值
2、 Math.max() :最大值
Math.min() :最小值
3、 Math.random() :随机数
4、 Math.ceil() :向上取整
Math.floor() :向下取整
5、 [long] round()四舍五入
6、 [double] pow(double a,double b) 求a的b次幂
7、 [double] sqrt(double a)开平方
8、 [double] cbrt(double a)开立方
3、BigDecimal:
为了解决浮点型在计算过程中产生精度丢失问题而使用的类。
BigDecimal构造方法有重载:
1、当( )内为double类型数据时:
即、BigDecimal b = new BigDecimal(double类型);
计算结果会更加不精确= =!
2、当( )内为String类型数据时:
即、BigDecimal b = new BigDecimal(String类型);
计算结果会很精确。
可以通过拼接空字符串""+ 或 String.valueOf实现double到String的转换。
BigDecimal的运算方法:
加法:add()
减法:subtract()
乘法:multiply()
除法:divide(),当除不尽时会抛出算术异常ArithmeticException。
解决方案:使用重载的divide()方法。
第一个参数是除数,第二个参数是保留的小数位数,第三个参数是舍入模式。
二、java.util.Date:
需要创建对象的引用 Date date = new Date();
直接输出date : 获取默认系统时间 格林威治时间
1、date.调用常用方法:
1、getTime() 获取1970-1-1零点到现在的毫秒值
2、date.调用过时方法:
1、getYear() 获取年份 获取1900年到现在的年份
2、getMonth() 获取月份 获取自然月-1
3、getDate() 获取日期
4、getDay() 获取星期几
5、getHours() 获取小时
6、getMinutes() 获取分钟
7、getSeconds() 获取秒钟
8、toLocaleString() 换成格式:年月日时分秒
需要注意的是:在Date和Calendar类中的month/MONTH 显示的是对应月份的下标(即从0开始,0-11),在调用或输出时根据情况±1。
3、SimpleDateFormat:
两种数据格式的相互转换:String ←→ Date:
创建SimpleDateFormat对象,传递参数为日期的格式。(y年,M月,d日,H时,m分,s秒 -和:是分隔符,判断不符合格式会抛出异常。)
[Date] parse(String str)将字符串解析成Date类型
[String] format(Date date)将Date类型转化为字符串
练习:接收用户输入的日期,计算距离现在有多少天
//练习:接收用户输入的日期,计算距离现在有多少天
public static void method2(String str) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date datein = sdf.parse(str);
System.out.println("获取到的生日是:"+sdf.format(datein));
long secondin = datein.getTime();
System.out.println("出生时的毫秒值:"+secondin);
Date datenow = new Date();
long nowsecond = datenow.getTime();
System.out.println("当前维度毫秒值:"+nowsecond);
long days = (nowsecond-secondin)/24/60/60/1000;
System.out.println("存活在世的天数:"+days);
}
三、java.util.Calendar日历类
Calendar类出现于Date类之后,替换掉了许多Date方法,该类将所有可能用到使用到的时间信息都封装为静态成员变量,方便使用。
1、Calendar类创建对象
Calendar类是一个抽象类,无法直接创建对象,该类提供了一个静态方法getInstance(),用于返回Calendar的子类对象,该子类对象是根据当前默认时区和语言环境所获取的。我们国家使用的是java.util.GregorianCalendar阳历。
直接使用类名或对象名调用,获取到的是Calendar类中定义好的静态常量的值,需要使用对象调用get()方法才能获取到该对象所表示的日历中对应的属性值。
Calendar c = Calendar.getInstance();
System.out.println(c);
/*输出内容是:
[time=1631265613352,areFieldsSet=true,areAllFieldsSet=true,
lenient=true,zone=sun.util.calendar.ZoneInfo
[id="Asia/Shanghai",offset=28800000,dstSavings=0,
useDaylight=false,transitions=29,lastRule=null],
firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,
YEAR=2021,MONTH=8,WEEK_OF_YEAR=37,WEEK_OF_MONTH=2,
DAY_OF_MONTH=10,DAY_OF_YEAR=253,DAY_OF_WEEK=6,
DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,
MINUTE=20,SECOND=13,MILLISECOND=352,ZONE_OFFSET=28800000,DST_OFFSET=0]
*/
2、Calendar类的方法:
1、[int] get(int field) 返回给定义日历字段的值
2、[void] set(int fields,int value) 将指定字段修改为指定字段的值
3、set方法的重载,可以一次性设置多个属性值
4、[void] add(int field,int amount)将给定字段增加或减少指定的值,具体增还是减由第二个参数amount的±决定