Java之BigDecimal、Date、Calendar、SimpleDateFormat类

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:

      1. 指定小数部分的取舍模式,通常采用四舍五入的模式
      2. 取值为BigDecimal.ROUND_HALF_UP

Date 类

  • Date 表示特定的瞬间,精确到毫秒 。 Date类中的大部分方法都已经被Calendar类中的方法所取代

  • 时间单位:

    1. 1秒= 1000毫秒
    2. 1毫秒 = 1000微秒
    3. 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);
            
        }
    }
    

猜你喜欢

转载自blog.csdn.net/xiaoxiaobaie/article/details/121337824