软件设计之Java入门视频(16)

软件设计之Java入门视频(16)

视频教程来自B站尚硅谷:

尚硅谷Java入门视频教程,宋红康java基础视频
相关文件资料(百度网盘)

提取密码:8op3

idea 下载可以关注 软件管家 公众号

学习内容:

该视频共分为1-717部分

本次内容涉及 480-509
在写代码时,总是需要来回切换界面来看代码要求,这里推荐Snipaste,可以把截图以窗口形式放在屏幕上

记录内容:

  1. SimpleDateFormat
  2. Calendar
  3. LocalDate、LocalTime、LocalDateTime
  4. DateTimeFormatter
  5. Comparable、Compartor
  6. 枚举类

1、SimpleDateFormat

1)格式化: 日期-->字符串

2)解析:格式化的逆过程 字符串-->日期

java 复制代码
package exer;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeTest {

    @Test
    public void testSimpleDateFormat() throws ParseException {
        //实例化SimpleDateFormat
        SimpleDateFormat sdf = new SimpleDateFormat();
        //格式化:
        Date date = new Date();
        System.out.println(date);//Tue Jul 16 16:55:04 CST 2024
        String format = sdf.format(date);
        System.out.println(format);//24-7-16 下午4:55
        //解析:
        String str = "1999-09-03 上午8:10";
        Date date1 = sdf.parse(str);
        System.out.println(date1);//Fri Sep 03 08:10:00 CST 1999

        //******按照指定的方式格式化和解析:调用带参的构造器*********
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format1 = sdf1.format(date);
        System.out.println(format1);//2024-07-16 04:55:04
        //解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现)
        Date date2 = sdf1.parse("2024-07-16 04:53:01");
        System.out.println(date2);//Tue Jul 16 04:53:01 CST 2024
    }
}

将字符串时间转换为java.sql.Date

java 复制代码
    @Test
    public void testSimpleDateFormat() throws ParseException {
        //******按照指定的方式格式化和解析:调用带参的构造器*********
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        //解析:要求字符串必须是符合SimpleDateFormat识别的格式(通过构造器参数体现)

        Date date2 = sdf1.parse("2020-09-08");
        java.sql.Date birthDate = new java.sql.Date(date2.getTime());
        System.out.println(birthDate);
    }

2、Calendar

java 复制代码
public class DateTimeTest {

    @Test
    //Calendar:抽象类
    public void testCalendar(){
        //1、实例化
        //方式一:创建其子类(GregorianCalendar)的对象
        //方式二:调用其静态方法getInstance()
        Calendar calendar = Calendar.getInstance();

        //2、常用方法
        //get()
        int days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//一年的第几天
        //set()
        calendar.set(Calendar.DAY_OF_MONTH,22);
        days = calendar.get(Calendar.DAY_OF_MONTH);//修改为22
        System.out.println(days);
        //add()
        calendar.add(Calendar.DAY_OF_MONTH,3);//修改为25
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);
        //getTime()
        Date date = calendar.getTime();
        System.out.println(date);//Thu Jul 25 17:24:53 CST 2024
        //setTime()  日历类-->date
        Date date1 = new Date();
        calendar.setTime(date1);
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);//16
    }
}

3、 LocalDate、LocalTime、LocalDateTime

java 复制代码
public class DateTimeTest {

    @Test
    public void test(){
        //now():获取当前日期、时间、日期+时间
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDate);//2024-07-16
        System.out.println(localTime);//20:32:14.111
        System.out.println(localDateTime);//2024-07-16T20:32:14.111

        //of():设置指定的年、月、日、时、分、秒、没有偏移量
        LocalDateTime localDateTime1 = LocalDateTime.of(2024, 7, 16, 20, 34, 20);
        System.out.println(localDateTime1);//2024-07-16T20:34:20

        //getXxx():获取相关的属性
        System.out.println(localDateTime.getDayOfYear());
        System.out.println(localDateTime.getDayOfMonth());
        System.out.println(localDateTime.getDayOfWeek());
        System.out.println(localDateTime.getMonth());
        System.out.println(localDateTime.getMonthValue());

        //体现不可变性:localDate值没变
        //withXxx():设置相关的属性
        LocalDate localDate1 = localDate.withDayOfMonth(22);
        System.out.println(localDate);
        System.out.println(localDate1);

        //
        LocalDateTime localDateTime2 = localDateTime.plusDays(4);
        System.out.println(localDateTime);
        System.out.println(localDateTime2);
    }
}

4、DateTimeFormatter

java 复制代码
public class DateTimeTest {

    @Test
    public void test(){
        //方式一:预定义标准格式
        DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        //格式化
        LocalDateTime localDateTime = LocalDateTime.now();
        String str1 = formatter.format(localDateTime);
        System.out.println(localDateTime);
        System.out.println(str1);
        //解析:字符串-->日期
        TemporalAccessor parse = formatter.parse("2024-07-16T20:57:50.077");
        System.out.println(parse);//{},ISO resolved to 2024-07-16T20:57:50.077

        //本地化相关格式:FormatStyle.SHORT、FormatStyle.MEDIUM、FormatStyle.LONG、FormatStyle.FULL
        DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
        //格式化
        String str2 = formatter1.format(localDateTime);
        System.out.println(str2);//24-7-16 下午9:02

        //自定义的格式:如 ofPattern("yyyy-MM-dd hh:mm:ss E")
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        String str3 = formatter2.format(localDateTime);
        System.out.println(str3);//2024-07-16 09:05:29
    }

5、Comparable、Compartor

说明:Java中的对象,正常情况下,只能进行比较:==或! 不能使用>或<的但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。

如何实现?使用两个接口中的任何一个:Comparable或Compare

Comparable

自然排序

1)像string、包装类等实现了comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式

2)像string、包装类重写compareTo(obj)方法以后,进行了从小到大的排列

3)重写compareTo(obj)的规则:

如果当前对象this大手形参对象obi则返回正整数

如果当前对象this小于形参对象obi则返回负整数

如果当前对象this等于形参对象obi,则返回零。

4)对于自定义来说,如果需要排序,可以让自定义类实现Comparable接口,重写compareTo方法,在该方法下指明如何排序

Compare

定制排序

1)当元素的类型没有实现java.lang.comparable接口而又不方便修改代码或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序

2)重写compare(object o1,object o2)方法,比较o1和o2的大小:如果方法返回正整数,则表示o1大于o2:如果返回0,表示相等:返回负整数,表示01小于o2

二者区别:

1)Comparable接口的方式一旦一定,保证comparable接口实现类的对象在任何位置都可以比较大小

2)Comparator接口属于临时性的比较

6、枚举类

枚举类的理解:

1)类的对象只有有限个,确定的,称此类为枚举类

2)当需要定义一组常量时,强烈建议使用枚举类

3)如果枚举类中只有一个对象,则可以作为单例模式的实现方式。

如何定义枚举类

1)方式一:jdk5.0之前,自定义枚举类

2)方式二:jdk5.0可以使用enum关键字定义枚举类

自定义枚举类

java 复制代码
package exer;

public class SeasonTest {
}

class Season{
    //1声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDesc;
    //2私有化类的构造器,给对象属性赋值

    
    public Season(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    //3提供当前枚举类的多个对象
    public static final Season SPRING = new Season("春天","A");
    public static final Season SUMMER = new Season("夏天","B");
    public static final Season AUTUMN = new Season("秋天","C");
    public static final Season WINTER = new Season("冬天","D");
    //4提供toString方法
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    //5提供toString方法

    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}

enum定义枚举类

java 复制代码
enum Season{
    //1提供当前枚举类的对象,多个对象之间用逗号隔开,末尾对象分号结束
    SPRING ("春天","A"),
    SUMMER ("夏天","B"),
    Season("秋天","C"),
    WINTER("冬天","D");
    //2声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDesc;
    //3私有化类的构造器,给对象属性赋值
    private Season(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    //4提供toString方法
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

}

enum类常用方法

1)values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的举值。

2)value0f(string str):可以把一个字符串转为对应的枚举类对象,要求字符串必须是枚举类对

3)tostring():返回当前枚举类对象常量的名称

相关推荐
难以触及的高度5 分钟前
source ~/.bash_profile有什么用
开发语言·bash
计算机学姐11 分钟前
基于微信小程序的食堂点餐预约管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
骆晨学长15 分钟前
基于springboot学生健康管理系统的设计与实现
java·开发语言·spring boot·后端·spring
骆晨学长15 分钟前
基于Springboot的医疗健康助手开题报告
java·spring boot·后端
二十雨辰16 分钟前
[苍穹外卖]-09Spring Task定时任务
java·数据库·spring
我是小酒16 分钟前
掌握 Spring:从新手到高手的常见问题汇总
java·后端·spring·springboot
白总Server22 分钟前
php语言基本语法
开发语言·ide·后端·golang·rust·github·php
小林熬夜学编程25 分钟前
【Linux系统编程】第二十弹---进程优先级 && 命令行参数 && 环境变量
linux·运维·服务器·c语言·开发语言·算法
A懿轩A29 分钟前
MySQL SQL多表查询语句各种连接
java·开发语言·数据库·sql·mysql·mybatis
代码代码快快显灵35 分钟前
XML标记语言
xml·java·数据库