• Java核心编程学习 -- day9


    匿名内部类的简化

    btn.addActionListener(new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(win, "点击了按钮!");
        }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    简化后:

    btn.addActionListener(e -> JOptionPane.showMessageDialog(win, "点击了按钮!"));
    
    • 1

    equals与Objects.equals

    package day9.demo2;
    
    import java.util.Objects;
    
    /**
     * @author NJR10byh
     * @date 2022/7/26 13:55:13
     * @description equals 与 Object.equals
     */
    
    public class task2 {
        public static void main(String[] args) {
            String a1 = null;
            String a2 = "njr";
            // System.out.println(a1.equals(a2)); 
            // Cannot invoke "String.equals(Object)" because "a1" is null
            System.out.println(Objects.equals(a1, a2));
            // Objects.equals更安全,它会提前先判断比较的值是否为null,再进行比较
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    Math类

    请添加图片描述

    System类

    请添加图片描述

    计算机认为的时间起源:1970-01-01 00:00:00

    • System.currentTimeMillis()
      从1970-01-01 00:00:00走到现在的毫秒

    BigDecimal类

    • 作用:解决浮点型运算精度失真的问题

    请添加图片描述

    • 使用构造器方法也会出现精度失真

    请添加图片描述

    package day9.demo3;
    
    import java.math.BigDecimal;
    
    /**
     * @author NJR10byh
     * @date 2022/7/26 15:57:53
     * @description BigDecimal
     */
    
    public class task3 {
        public static void main(String[] args) {
            BigDecimal a = new BigDecimal(0.1);
            System.out.println(a);
            /** 不建议使用 new BigDecimal(0.1),因为结果为 0.1000000000000000055511151231257827021181583404541015625
             * 会导致失真
             * 推荐使用BigDecimal.valueOf(0.1)
             */
    
            BigDecimal a1 = BigDecimal.valueOf(0.1);
            BigDecimal a2 = BigDecimal.valueOf(0.2);
    
            System.out.println(0.1 + 0.2); // 0.30000000000000004
            System.out.println(a1.add(a2)); // 0.3
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    日期与时间

    Date类

    Date类记录时间的两种形式:

    • 1、日期对象
    • 2、时间毫秒值
    package day9.demo4;
    
    import java.util.Date;
    
    /**
     * @author NJR10byh
     * @date 2022/7/26 16:12:43
     * @description Date
     */
    
    public class task4 {
        public static void main(String[] args) {
            Date d = new Date();
            // 形式1:日期对象
            System.out.println(d); // Tue Jul 26 16:36:58 CST 2022
    
            // 形式2:时间毫秒值
            System.out.println(d.getTime()); // 1658824618395
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    SimpleDateFormat 日期格式化

    格式化时间为熟悉的格式

    format()

    • 可以接受 毫秒值时间对象
    package day9.demo6;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @author NJR10byh
     * @date 2022/7/26 17:04:23
     * @description SimpleDateFormat 格式化日期
     */
    
    public class task6 {
        public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
            // 1、接受毫秒值
            // 格式化当前时间 + 1000秒
            long currTime_ms = System.currentTimeMillis();
            String currformatTime_ms = sdf.format(currTime_ms);
            System.out.println(currformatTime_ms);
            String formatTime_ms = sdf.format(currTime_ms + 1000 * 1000);
            System.out.println(formatTime_ms);
    
            System.out.println("-------------------");
            
            // 2、接受时间对象
            Date currTime_date = new Date();
            String currformatTime_date = sdf.format(currTime_date);
            System.out.println(currformatTime_date);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    将熟悉的格式转换为日期对象

    parse()
    注:需要抛出异常

    package day9.demo7;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @author NJR10byh
     * @date 2022/7/26 17:32:18
     * @description SimpleDateFormat 熟悉的格式转换为日期对象
     */
    
    public class task7 {
        public static void main(String[] args) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
            String dateStr = "2022-07-26 17:32:18";
            Date d = sdf.parse(dateStr);
            System.out.println(d); // Tue Jul 26 17:32:18 CST 2022
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    Calendar类

    • 常用方法

    请添加图片描述

    JDK8开始新增的日期类

    LocalTime / LocalDate / LocalDateTime

    请添加图片描述

    请添加图片描述

    请添加图片描述

    请添加图片描述

    Instant时间戳

    请添加图片描述

    DateTimeFormatter

    请添加图片描述

    Period(日期间隔)

    用于 LocalDate 之间的比较

    请添加图片描述

    Duration(时间间隔)

    用于 LocalDateTime 之间的比较(也可用于 Instant 之间的比较)

    请添加图片描述

    ChronoUnit

    请添加图片描述

    练习代码: day9_code

  • 相关阅读:
    关于升级高德地图导航9.5.0的问题 ‘com.amap.api:navi-3dmap:9.5.0_3dmap9.5.0‘
    自动驾驶:2022 apollo day 观后感(三)
    带433遥控紫外线照明灯触摸芯片-DLT8SA20A-杰力科创
    LeetCode | 只出现一次的值(python解法)
    计算机毕业设计Python+Django的银行取号排队系统
    docker mysql8.0 启动,挂数据卷,定时备份,恢复~
    ElementUI Message 消息提示,多个显示被覆盖的问题
    2022上海生物发酵展-品牌企业纷纷入驻抢占先机,谁来赴盛宴参邀您的参与
    MAC和安卓手机文件传输OpenMTP
    52、GNT:Is Attention All NeRF Needs?
  • 原文地址:https://blog.csdn.net/NJR10byh/article/details/125990335