目录

一.编码表

二.StringBuilder类

三.JDK 日期相关处理

四.日期对象与日期字符串互转


一.编码表

概况:在计算机中,所有的数据最终都是以二进制(0,1)的形式存储和处理的 ,编码表就是把文字换成电脑能看懂的数字对照表。

1.ASCII码表

说明:专门给英文、数字、标点用的简易文字数字对照表,存不了中文,1个ASCII码占1个字节。

2.ISO8859-1(latin1)

说明:西欧专用单字节编码,只支持外文不支持中文,1个ISO8859-1码占1个字节。

3.GBK(GB2312)

说明:专为中文设计,汉字占2字节,兼容简体常用汉字并完全兼容 ASCII,英文字符照旧占1字节。

4.Unicode

概述:统一全球所有文字的万能编码,给全世界每个文字都分配唯一编号。

UTF-8:

1.英文数字:1字节

2.中文:3 字节

3.全网通用、网页、项目最常用

4.节省流量和存储空间

UTF-16:

1.所有常用字符统一2字节 

2.Java 内存里 char 默认就是它

3.读取速度快,占空间更大

二.StringBuilder类

概况:可变字符串,拼接字符串效率极高,线程不安全。

1.构造方法

  • 空参构造

StringBuilder sb = new StringBuilder();

作用:创建空字符串容器,默认容量 16没存内容,能直接追加字符。

  • 指定容量构造

StringBuilder sb = new StringBuilder(30);

作用:直接设定容器容量为 30,提前预留空间,少自动扩容。

  • 传字符串构造

StringBuilder sb = new StringBuilder("abc");

作用:直接把字符串放进容器,容量 = 字符串长度 + 16。

2.成员方法

  • append方法

public static void main(String[] args) {

       StringBuilder sb = new StringBuilder();

        sb.append(5);

        char[] chars = {'1', '2'};

        sb.append(chars);

        sb.append("abc");

        System.out.println(sb);//"512abc"

}

作用:不断向容器的末尾追加任意类型的数据。

  • length方法

public static void main(String[] args) {

        StringBuilder sb = new StringBuilder();
        sb.append("abc");
        sb.append("123");
        System.out.println(sb.length());// 6

}

作用:返回容器中字符的个数。

  • substring方法

public static void main(String[] args) {

        StringBuilder sb = new StringBuilder("abcde");
        String substr = sb.substring(1, 3);
        System.out.println(substr);//bc 截取范围 [startIndex,endIndex-1]

}

作用:返回一个新的 String,它包含此序列当前所包含字符的子序列。

  • delete方法

public static void main(String[] args) {

        StringBuilder sb = new StringBuilder("abcde");
        sb.delete(1, 3);
        System.out.println(sb);//ade

}

作用:删除从 start 索引开始,到 end 索引结束的字符(含头不含尾)

  • reverse()

public static void main(String[] args) {

        StringBuilder sb = new StringBuilder("abcde");
        sb.reverse();
        System.out.println(sb);//edcba

}

作用:反转字符顺序,从头倒过来排列

3.StringBuilder底层原理

底层原理:底层是可变长度 char 数组,内容直接在原数组修改,不创建新对象。

扩容机制:装满存不下自动扩容新容量 = 原容量 * 2 + 2。

StringBuilder和String 最大区别:
String:底层 final 数组,不可变,一改就建新对象
StringBuilder:数组可改,直接原地修改,效率极高

4.StringBuilder链式编程

public static void main(String[] args) {

       StringBuilder sb = new StringBuilder();

        char[] chars = {'1', '2'};

        sb.append(5).append(chars).append("abc")

        System.out.println(sb);//"512abc"

}

说明:调用方法后返回自身对象,就能连着点调用多个方法。

三.JDK 日期相关处理

1.Date类

概述:代表系统当前毫秒时间,用来表示日期时间,精度到毫秒。

  • 无参构造

public static void main(String[] args) {

        Date date = new Date();
        System.out.println(date);//输出当前时间

}

作用:获取当前系统时间。

  • 有参构造

public static void main(String[] args) {

        Date date = new Date(3000);//传入3000毫秒
        System.out.println(date);//标准基准时间上自动加上8小时(调整到东八区时间)再加对应毫秒数 1970年1月1日 早上8点0分3秒

}

作用:根据毫秒值创建日期对象,表示1970 年 1 月 1 日 00:00:00 往后过了多少毫秒的时间。

2.LocalDate类

概述:只存年月日,不含时分秒时区,专门用来处理纯日期。

  • 获取功能

public static void main(String[] args) {

        LocalDate now = LocalDate.now();/获得当前时间

        System.out.println(now);//2026-05-16

        System.out.println(now.getYear());//获得年份数字2026

        System.out.println(now.getMonth());//获得月份数字5

        System.out.println(now.getMonthValue());//获得月份英文MAY

        System.out.println(now.getDayOfMonth());//获得日期数字16

}

  • 设置功能

public static void main(String[] args) {

        LocalDate localDate01 = LocalDate.of(2018, 10, 01);//设置时间

        System.out.println(localDate01);//2018-10-01

        LocalDate localDate02 = localDate01.withYear(2016);

        System.out.println(localDate02);//2016-10-01 修改年份

        LocalDate localDate03 = localDate01.withMonth(01);

        System.out.println(localDate03);//2018-01-01 修改月份

        LocalDate localDate04 = localDate01. withDayOfMonth(15);

        System.out.println(localDate04);//2018-01-15 修改日期

        LocalDate localDate05 = localDate01.withDayOfYear(100);

        System.out.println(localDate05);//2018-04-10 把日期改成这一年的第N天,返回一个新日期

}

  • 判断和计算功能

public static void main(String[] args) {

        LocalDate now01 = LocalDate.now();

        LocalDate now02 = now.plusYears(3);//在now时间上增加年份

        System.out.println(now02);

        LocalDate now03 = now.minusMonths(2);//在now时间上增加月份

        System.out.println(now03);

         LocalDate now04 = LocalDate.of(2024, 4, 27);

         System.out.println(now01.isEqual(now02));//两个日期年月日均相同,返回true,否则返回false

}

3.LocalTime类

概述:时:分: 秒,没有年月日,纯时间

  • 获取功能

public static void main(String[] args) {

        LocalTime now = LocalTime.now();

        System.out.println(now);//输出当前的时:分: 秒.纳秒

        System.out.println(now.getHour());//输出当前的时

        System.out.println(now.getMinute());//输出当前的分

        System.out.println(now.getSecond());//输出当前的秒

        System.out.println(now.getNano());//输出当前的纳秒

}

  • 设置功能

public static void main(String[] args) {

        System.out.println(LocalTime.of(12, 20, 30));//设置时分秒

        System.out.println(LocalTime.now().withHour(11));//修改小时,输出11:20:30

        System.out.println(LocalTime.now().withMinute(30));//修改分钟,输出12:30:30

        System.out.println(LocalTime.now().withSecond(20));//修改秒,输出12:20:20

}

  • 计算和判断功能

public static void main(String[] args) {

        LocalTime time01 = LocalTime.of(13, 11, 33);

        LocalTime time02 = time01.plusHours(3)//在time01基础上增加小时

        System.out.println(time02);//16:11:33

        LocalTime time03 = LocalTime.of(13, 11, 33);

        LocalTime time04 = LocalTime.of(15, 12, 33);

        System.out.println(time03.isBefore(time04));//比较time03是不是在time04前面 输出true

}

4.LocalDateTime类

概述:它是 JDK8 提供的不可变、线程安全的完整时间类,同时包含 年月日 + 时分秒,是开发里最常用的时间类型之一。

  • 获取功能

public static void main(String[] args) {

        LocalDateTime now = LocalDateTime.now();//获得当前年月日时分秒纳秒

        System.out.println(now);//格式:yyyy-mm-ddTHH:mm:ss.nn

        System.out.println(now.getYear());//获得年份数字

        System.out.println(now.getMonthValue());//获得月份数字

        System.out.println(now.getDayOfMonth());//获得日期数字

        System.out.println(now.getHour());//获得小时

        System.out.println(now.getMinute());//获得分钟

        System.out.println(now.getSecond());//获得秒

}

  • 设置功能

public static void main(String[] args) {

        LocalDateTime dateTime01 = LocalDateTime.of(2014, 12, 12, 16, 20);//设置年月日时分

        System.out.println(dateTime01);//输出2014-12-12T16:20

        LocalDateTime dateTime02 = dateTime01.withYear(2015).withMinute(33)//修改年份和分钟

        System.out.println(dateTime02);//输出2015-12-12T16:33

}

  • 判断功能

public static void main(String[] args) {

        LocalDateTime dateTime01 = LocalDateTime.of(2020, 11, 12, 14, 20);

        LocalDateTime dateTime02 = LocalDateTime.of(2020, 11, 12, 14, 20);

        System.out.println(dateTime.isEqual(dateTime02));//判断是否一样 输出true

}

四.日期对象与日期字符串互转

1.JDK1.8 以前转换方式(SimpleDateFormat)(只认date类)

  • 构造方法

SimpleDateFormat sdf = new SimpleDateFormat(String pattern);//pattern是年月日 时分秒格式

  • 将日期对象格式化为日期字符串

 public static void main(String[] args) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置格式
        String formatStr = sdf.format(new Date());//将当前指定的格式yyyy-MM-dd HH:mm:ss转化为字符串
        System.out.println(formatStr);//按照这个格式yyyy-MM-dd HH:mm:ss输出字符串

}

  • 将日期字符串解析成日期对象

 public static void main(String[] args) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//设置格式
        Date date = sdf.parse("2013-02-12");//输出对应格式字符串转化成date类型变量
        System.out.println(date.getTime());//输出的是 从 1970-01-01 00:00:00 到 2013-02-12 00:00:00 的总毫秒数

}

2.JDK1.8 及以后转换方式(DateTimeFormatter)

  • 构造方法

DateTimeFormatter df = DateTimeFormatter.ofPattern(String pattern);//pattern是年月日 时分秒格式

  • 将日期对象转换为日期字符串

 public static void main(String[] args) {

        LocalDateTime now = LocalDateTime.of(2025,01,05,14,30,40);//设置时间

        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");//设置格式

        String formatStr = df.format(now);//按照格式转化成字符串

        System.out.println(formatStr);//输出2025/01/05 14:30:40字符串

}

  • 将日期字符串转换为日期对象

 public static void main(String[] args) {

        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");//设置格式
        LocalDate ld = LocalDate.parse("2020-01-13", df);//将2020-01-13按照df格式转化
        System.out.println(ld);//输出LocalDate类型的2020-01-13数据

}

更多推荐