Java核心编程学习 -- day9

匿名内部类的简化

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

简化后:

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

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,再进行比较
    }
}

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
    }
}

日期与时间

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
    }
}

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);
    }
}

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

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
    }
}

Calendar类

  • 常用方法

请添加图片描述

JDK8开始新增的日期类

LocalTime / LocalDate / LocalDateTime

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

Instant时间戳

请添加图片描述

DateTimeFormatter

请添加图片描述

Period(日期间隔)

用于 LocalDate 之间的比较

请添加图片描述

Duration(时间间隔)

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

请添加图片描述

ChronoUnit

请添加图片描述

练习代码: day9_code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NJR10byh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值