• 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

  • 相关阅读:
    (一)JVM实战——jvm的组成部分详解
    【快应用】网页跳转快应用测试指导
    JavaScript 数组常用方法详细教程
    重庆自考本科报名条件有哪些?是否有学历限制?
    案例分享:高科技企业产品管理部门设置和产品经理岗位设置
    DBCO Sata650,二苯并环辛烷Sata650,Seta-650-DBCO
    msfvenom制作主控与被控端
    Linux 内存管理 页回收和swap机制
    maven安装配置
    MEF:分层注意模块:协作细化模块
  • 原文地址:https://blog.csdn.net/NJR10byh/article/details/125990335