JavaSE-13
目录
一.编码表
概况:在计算机中,所有的数据最终都是以二进制(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数据
}
更多推荐
所有评论(0)