1.BigDecimal类
由于在运算的时候,float类型和double很容易丢失精度,所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal不可变的、任意精度的有符号十进制数。
构造方法
public BigDecimal(String val)
成员方法
public BigDecimal add(BigDecimal augend)//加
public BigDecimal subtract(BigDecimal subtrahend)//减
public BigDecimal multiply(BigDecimal multiplicand)//乘
public BigDecimal divide(BigDecimal divisor)//除法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位
// roundingMode 取舍模式 比如四舍五入
package com.xawl.demo2;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @Author:liger
* @Description:爱学Java
* @Time:2021-11-18 12:01
*/
public class Test01 {
public static void main(String[] args) {
BigDecimal b1 = new BigDecimal("10");
BigDecimal b2 = new BigDecimal("5");
BigDecimal s1 = b1.subtract(b2); //相减
System.out.println(s1);
BigDecimal s2 = b1.add(b2);//相加
System.out.println(s2);
BigDecimal s3 = b1.multiply(b2);//相乘
System.out.println(s3);
BigDecimal s4 = b1.divide(b2);//相除
System.out.println(s4);
BigDecimal b3 = new BigDecimal("20");
//public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
//scale 小数点后面保留几位
// roundingMode 取舍模式 比如四舍五入
BigDecimal s5 = b3.divide(new BigDecimal("3"), 7, RoundingMode.UP);
System.out.println(s5);
}
}
2.Date类
类 Date 表示特定的瞬间,精确到毫秒。
构造方法
public Date()
public Date(long date) //把一个long类型的毫秒值转换成一个日期对象
成员方法
public long getTime(): 获取一个日期对象对象毫秒值
public void setTime(long time): 给一个日期对象设置上指定的毫秒值 例:date.setTime(1000 * 60 * 60) ;
package com.xawl.demo2;
import java.util.Date;
/**
* @Author:liger
* @Description:爱学Java
*/
public class Test02 {
public static void main(String[] args) {
/*Date ---- long 的转换
调用getTime方法
long --- Date 的转换
可以使用构造方法
setTime(long time)*/
Date d = new Date();
long t = d.getTime();
System.out.println(t);
d.setTime(1000*60*60);
System.out.println(d);
}
}
3.SimpleDateFormat类
可以把一个日期对象格式化成一个文本(字符串) , 也可以把一个日期字符串解析成一个日期对象
构造方法:
public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
成员方法:
public String format(Date date): 把一个日期对象格式化成一个字符串
public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意要以指定格式解析
- 规则的定义
- y——年
- M——月
- d——天
- H——时
- m——分
- s——秒
日期工具类代码
package com.xawl.demo2;
import java.text.SimpleDateFormat;
/**
* @Author:liger
* @Description:爱学Java
*/
public class Test03 {
public static void main(String[] args) {
long l = System.currentTimeMillis();//获取当前系统时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s1 = sdf.format(l);
System.out.println(s1);
}
}
4.Calendar类
Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR
等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
成员方法:
public static Calendar getInstance() 使用默认时区和语言环境获得一个日历对象
public int get(int field) 获得给定日历字段对应的值 field通过Calendar提供的字段来拿
public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
public final void set(int year,int month,int date) 设置日历时间 年月日
键盘录入任意一个年份,获取任意一年的二月有多少天
package com.xawl.demo2;
import java.util.Calendar;
import java.util.Scanner;
/**
* @Author:liger
* @Description:爱学Java
*/
public class Test6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
Calendar cal = Calendar.getInstance();
cal.set(year,2,1);
cal.add(Calendar.DAY_OF_MONTH,-1);
int day = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//判断某一年是不是闰年
if(year%4==0&&year%100!=0||year%400==0) {
System.out.println("是闰年");
}
}
}
补充 BigInteger概述 可以让超过long范围内的数据进行运算
构造方法
public BigInteger(String val)
成员方法
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)
示例
BigInteger bi1=new BigInteger("100");
BigInteger bi2=new BigInteger("2");
System.out.println(bi1.add(bi2)); //+
System.out.println(bi1.subtract(bi2)); //-
System.out.println(bi1.multiply(bi2)); //*
System.out.println(bi1.divide(bi2)); //(除)
BigInteger[] arr=bi1.divideAndRemainder(bi2); //取除数和余数
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}