BigDecimal
-
思考:以下程序输出结果是多少:
-
public class Demo07 { public static void main(String[] args) { double d1 = 1.0; double d2 = 0.9; System.out.println(d1-d2); } }
-
位置:java.math包中
-
作用:精确计算浮点数
-
创建方式:BigDecimal bd = new BigDecimal(“1.0”);
-
public class Demo07 { public static void main(String[] args) { double d1 = 1.0; double d2 = 0.9; System.out.println(d1-d2); // 面试题 double result = (1.4-0.5)/0.9; System.out.println(result); // BigDecimal,大的浮点数的精确计算 BigDecimal bd1 = new BigDecimal("1.0"); BigDecimal bd2 = new BigDecimal("0.9"); // 减法 BigDecimal r1 = bd1.subtract(bd2); System.out.println(r1); // 加法 BigDecimal r2 = bd1.add(bd2); System.out.println(r2); // 乘法 BigDecimal r3 = bd1.multiply(bd2); System.out.println(r3); // 除法 BigDecimal r4 = new BigDecimal("1.4") .subtract(new BigDecimal("0.5")) .divide(new BigDecimal("0.9")); System.out.println(r4); BigDecimal r5 = new BigDecimal("20").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP); System.out.println(r5); // BigDecimal add(BigDecimal bd) 加 // BigDecimal subtract(BigDecimal bd) 减 // BigDecimal multiply(BigDecimal bd) 乘 // BigDecimal divide(BigDecimal bd) 除 } }
-
除法:divide(BigDecimal bd,int scal,RoundingMode mode)
-
参数scal:指定精确到小数点后几位
-
参数mode:
- 指定小数部分的取舍模式,通常采用四舍五入的模式
- 取值为BigDecimal.ROUND_HALF_UP
-
Date 类
-
Date 表示特定的瞬间,精确到毫秒 。 Date类中的大部分方法都已经被Calendar类中的方法所取代
-
时间单位:
- 1秒= 1000毫秒
- 1毫秒 = 1000微秒
- 1微妙 = 1000纳秒
-
// 创建Date类对象 Date date1 = new Date(); System.out.println(date1.toString()); System.out.println(date1.toLocaleString()); Date date2 = new Date(date1.getTime()-60*60*24*1000); System.out.println(date2.toLocaleString()); // 方法 after before boolean b1 = date1.after(date2); System.out.println(b1); boolean b2 = date1.before(date2); System.out.println(b2); // 比较compareTO(); int v = date1.compareTo(date2); System.out.println(v); // 比较是否相等 equals(); boolean b3 = date1.equals(date2); System.out.println(b3);
Calendar 类
-
Calendar 提供了获取或设置各种日历字段的方法
-
构造方法
- protected Calendar () : 由于修饰符是 protected ,所以无法直接创建该对象
-
其他方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcJvwqAG-1636965670062)(C:\Users\archser\Desktop\java学习\学习截图\微信截图_20211114224221.png)]
-
public class Demo02 { public static void main(String[] args) { // 创建calendar对象 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime().toLocaleString()); System.out.println(calendar.getTimeInMillis()); // 获取时间信息 // 获取年 int year = calendar.get(calendar.YEAR); // 月 int month = calendar.get(calendar.MONTH); // 日 int day = calendar.get(calendar.DAY_OF_MONTH); // 小时 int hour = calendar.get(calendar.HOUR_OF_DAY); // 分钟 int minute = calendar.get(calendar.MINUTE); // 秒 int second = calendar.get(calendar.SECOND); System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒"); // 修改时间 Calendar calendar2 = Calendar.getInstance(); calendar2.set(Calendar.DAY_OF_MONTH,5); System.out.println(calendar2.getTime().toLocaleString()); // add修改时间 calendar2.add(Calendar.HOUR,1); System.out.println(calendar2.getTime().toLocaleString()); // 补充方法 calendar2.add(Calendar.MONTH,1); int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH); int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH); System.out.println(max); System.out.println(min); } }
SimpleDateFormat 类
-
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类
-
进行格式化(日期 -> 文本)、解析(文本 -> 日期)。
-
常见的时间模式字母
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i7BS22Id-1636965670064)(C:\Users\archser\Desktop\java学习\学习截图\微信截图_20211115162749.png)]
-
public class Demo03 { public static void main(String[] args)throws Exception { // 创建SimpleDateFormat 对象 SimpleDateFormat sdf = new SimpleDateFormat("yyy/MM/dd"); // 创建Date Date date = new Date(); // 格式化date(把日期转成字符串) String str = sdf.format(date); System.out.println(str); // 解析(把字符串转成日期) Date date2 = sdf.parse("1990/05/01"); System.out.println(date2); } }