总结
StringBuilder:可以改变的字符串
底层:使用的是一个byte类型的数组,默认长度16
如果超过16,数组会自动扩容
扩容的时机:当添加的数据的长度大于此时数组的长度
扩容的机制:当前数组长度的2倍 + 2
-
构造方法:
StringBuilder()
构造一个没有字符的字符串构建器,初始容量为16个字符。// 创建StringBuilder的对象 StringBuilder sb = new StringBuilder(); int len = sb.capacity();// 获取底层数组的长度 System.out.println(len);
StringBuilder(String str)
构造一个初始化为指定字符串内容的字符串构建器。StringBuilder sb2 = new StringBuilder("abcde");// 将String类型“abc”转换为StringBuilder System.out.println(sb2.capacity());
-
常用的方法:
append(boolean b) :追加(在尾部加上)StringBuilder sb = new StringBuilder(); // 在尾部追加 sb.append("abc"); sb.append(123); System.out.println(sb); // StringBuilder是可以改变字符串,正常是不用返回值,但是在append方法里面有返回值值,返回值类型还是StringBuilder // 这种设计是为了能提供链式开发 sb.append("abc").append("www").append(true); System.out.println(sb);
capacity() 返回当前容量
delete(int start, int end) 删除此序列的子字符串中的字符。sb.delete(0,3); System.out.println(sb);
deleteCharAt(int index) 删除 char在这个序列中的指定位置。
sb.deleteCharAt(0); System.out.println(sb);
insert(int offset, boolean b) 将 boolean参数的字符串表示插入到此序列中。
sb.insert(1,false); System.out.println(sb);
replace(int start, int end, String str) 用指定的String中的字符替换此序列的子字符串中的 String 。
sb.replace(1,6,"FALSE"); System.out.println(sb);
reverse() 导致该字符序列被序列的相反代替。
sb.reverse(); // 翻转 System.out.println(sb);
setCharAt(int index, char ch) 指定索引处的字符设置为 ch 。
sb.setCharAt(0,'我'); System.out.println(sb);
trimToSize() 尝试减少用于字符序列的存储。
sb.trimToSize(); System.out.println(sb.capacity()); System.out.println(sb.length());
-
使用StringBuilder
// 设计一个方法讲解数组的元素拼接为字符串 public static String getElements(int[] nums) { // 拼接字符串:+,使用StringBuilder的append() StringBuilder sb = new StringBuilder(); for (int num : nums) { sb.append(num); } // 返回结果 return sb.toString(); }
public static void main(String[] args) { String str = "vxc3245324sddsgdf的方式更多发给是否跟得上343dxsfdsfgd"; // 将str首位加上 hello StringBuilder sb = new StringBuilder(str); str = sb.insert(0, "hello").append("hello").delete(15,26).toString(); System.out.println(str); }
正则表达式
正则表达式:就是用一个特定格式来表示某种数据
作用:用校验数据是否满足某个要求
在java中怎样写正则表达式:所有的正则表达式都是一个String类型数据
String regex = "[写一些特定格式的数据]";
0-9:任意一个数字
a-z:任意一个小写字母
A-Z:任意一个大写字母
\u4e00-\u9fa5:任意的一个汉字
正则表达式怎样表示个数
"[正则的数据]{个数}"
"[0-9]{2}":任意的2个数字
“[0-9]{2,15}”:任意的2个到15个之间个数的数字
"[0-0]{1,}":任意个数的数字(1个以上)
在java那些方法支持正则表达式,在String里面有几个方法
1、matches(String regex) :判断指定字符串数据是否满足传入的正则格式
2、replaceAll(String regex, String replacement):将匹配上正则表达式的数据替换成replacement
public static void main(String[] args) {
String str = "5654654675756765768";
// 声明一个正则表达式
String regex = "[0-9]{1,}";
// 使用正则表达式
boolean matches = str.matches(regex);// 判断str是否是0-9之间的任意一个数字
System.out.println(matches);
String regex2 = "[a-z]{1,}";
String regex3 = "[a-zA-Z]{1,}";
String regex4 = "[\u4e00-\u9fa5]{1,}";
System.out.println("你们好32423".matches(regex4));
String str = "d2gf3fdsgfd44dsfsd567dsfdsf123432345325ff";
// 将str中一个数字替换为“”
str = str.replaceAll("[0-9]{2}","我");
System.out.println(str);
}
public static void main(String[] args) {
String regex = "[\\D]"; // \d:任意的一个数字 \D:任意一个非数字
String regex = "[^0-9]"; // [0-9]:任意的一个数字 [^0-9]:
String regex = "[0-9a-zA-Z]"; // [0-9a-zA-Z]:任意的一个数字或者大小写字母
String regex = "[\\w]"; // \w:任意的一个数字或者大小写字母
String regex = "[\\W]";
String regex = "[^0-9a-zA-Z]";
String str = "a";
String regex = "[^\u4e00-\u9fa5]";
System.out.println(str.matches(regex));
String regex = "[0-9]{n,}"; // {n}:固定个数,{n,m}:最少n个,最多m个,{n,}:至少n个
// 表示个数的通配符:?:0个或1个 *:0个或多个 +:至少1个
String regex = "[0-9]+";
System.out.println("13325436547547547547547547".matches(regex));
// 以声明开头
String regex = "^[1][0-9]{10}"; // ^[]:以这个内容做开头
System.out.println("1724324444".matches(regex));
// 以声明结尾
String regex = "^[1][0-9]{6}[.com]{4}$";
System.out.println("1724323.net".matches(regex));
// String:matches()、replaceAll():正则匹配来替换、replaceFirst():正则匹配第一个、spilt():使用正则表达式来分割
String str = "143t675467547y5";
String regex = "[a-zA-Z]";
String s2 = str.replaceFirst(regex, "");
System.out.println(s2);
String str = "123a456b789cc234ffff777"; // 分割字符串,等到所有的数字子串
String[] split = str.split("[a-z]{1,}");
System.out.println(Arrays.toString(split));
Date:日期类
我们要操作的日期其实是某个瞬间:年月日 时分秒
Date:java.util
Date:就是表示日期的一瞬间
-
构造方法
Date() 获取当前的系统时间。
Date(long date):通过传入毫秒数,转换为对应日期 -
常用方法
setTime(long time):将date的日期设置为传入的毫秒数对应的日期
getTime() :将date转换为毫秒数public static void main(String[] args) { // 1、获取当前的系统日期 Date date = new Date(); // 显示的格式和中国人堵塞习惯不符 System.out.println(date); Date date1 = new Date(3254646546754L); System.out.println(date1); long time = date.getTime(); System.out.println(time); date.setTime(3456436546754L); System.out.println(date); }
SimpleDateFormat:日期格式化的类
-
将日期设置成我们能看懂的格式
-
格式化中表示的符号:
y:年
M:月
d:日
H:时
m:分
s:秒 -
日期的格式:
yyyy:四位的年份(2023)
yy:两位的年份(23)
MM:两位月份(12)
dd:两位的号数
HH:两位的小时
mm:两位的分钟
ss:两位秒数 -
日期显示格式其实就是上面的日期格式的拼接
"yyyy-MM-dd HH:mm:ss"
"yyyy/MM/dd HH:mm:ss"
"yyyy年MM月dd日 HH时mm分ss秒"
-
-
构造方法
SimpleDateFormat():默认格式
SimpleDateFormat(String pattern) 使用设置的格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 创建一个带自定义格式的日期格式化对象 Date date = new Date();
-
常用方法:
format(date):格式化日期的方法// 格式化当前日期 String format = sdf.format(date); System.out.println(format);
parse(date):将一个字符串表示日期,转换为Date类型
// 将 “2024-02-09 00:00:00”转化为Date Date parse = sdf.parse("2024-02-10 00:00:00"); // 注意:字符串的格式和sdf里面设置格式一致 System.out.println(parse);
Calendar:日历类
这个进行日期的运算(加减日期)
Calendar: 是一个抽象类
-
创建Calendar对象调用:getInstance()
-
认识Calendar常用的字段(常量):
YEAR:表示Calendar这类中年字段(属性),通过get(YEAR)获取年的数据
MONTH:表示Calendar这类中月份字段(属性),通过get(MONTH)获取月份的数据,注意:月份从0开始,获取的月份的数据比实际少1
DAY_OF_MONTH:表示Calendar这类中号数字段(属性)HOUR:小时字段
MINUTE:分钟字段
SECOND:秒的字段 -
常用的方法
getInstance()Calendar cal = Calendar.getInstance(); // 创建了一个Calendar对象
get(int field):根据传入的字段,获取对应的数据
// 获取年月日 时分秒 int y = cal.get(Calendar.YEAR);// 获取年的数据 System.out.println(y); int month = cal.get(Calendar.MONTH) + 1; System.out.println(month); int d = cal.get(Calendar.DAY_OF_MONTH); System.out.println(d); System.out.println(cal.get(Calendar.HOUR)); System.out.println(cal.get(Calendar.MINUTE)); System.out.println(cal.get(Calendar.SECOND));
set(int field, int value) :设置对应字段的数据
cal.set(Calendar.YEAR,2024); cal.set(Calendar.MONTH,12);
add(int field, int amount) :对传入的字段进行运算,amount是正数就是加法,amount是 负数就是做减法
getTime():将Calendar对象转换Date类型Calendar cal = Calendar.getInstance(); // 创建了一个Calendar对象 Date date = cal.getTime();
setTime():将Date对象转换Calendar类型
Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date);