1.StringBuffer
频繁增删工作, 就会产生大量的对象
StringBuilder
字符串缓冲区
String 不可变的字符序列 功能强大 但是不适用于频繁增删字符串内容的情况(会导致出现大量的无用内存)
StringBuffer 可变字符序列 适用于频繁增删操作字符串 线程安全的 效率较低 多线程情况下
StringBuilder 可变字符序列 适用于频繁增删操作字符串 线程不安全的 效率高 单线程情况下
public class Test {
public static void main(String[] args) {
// 必须通过new来创建对象
StringBuffer buffer = new StringBuffer();
buffer.append("abc");
buffer.append("def");
buffer.append("fff");
System.out.println(buffer);
// 左闭右开
buffer.delete(0, 3);
System.out.println(buffer);
//插入
buffer.insert(1, "zz");
System.out.println(buffer);
//翻转
buffer.reverse();
System.out.println(buffer);
String string = buffer.toString();
System.out.println(string);
a(string);
}
public static void a(String str){
}
}
2.正则表达式
public class Test1 {
public static void main(String[] args) {
String str = "abcaaabdaabaa#def#ff#hhh";
String string = str.replace("#", "?");//replace("#", "?"); 将所有符合条件的字符串全部替换, 不支持正则表达式
System.out.println(string);
// 只替换第一个符合正则表达式的部分
String first = str.replaceFirst("[abcdef]+", "?");
System.out.println(first);
// 替换所有符合正则表达式的部分
String all = str.replaceAll("[abcdef]+", "?");
System.out.println(all);
// 字母 数字 下划线 6 ~8位
// 手机号 11位数
// 身份证号 18位
String string2 = "aaaa";
boolean matches = string2.matches("[a]+");
System.out.println(matches);
// subString 截取
String string3 = "abcdefg";
/*
* [abc]
* [a-zA-Z_0-9]
* 预定义字符
* \d 0-9数字
* \w [a-zA-Z_0-9]
* . 任意字符
* aaa@aaaccom
* @[][.]
* @[abc1236][.](com|cn)
* aaaaa
* [a]+
* * 任意多个
* + 至少一个
* {6} 恰好6比
* {6,} 至少6次
* {6,8} 6到8次
* [a-zA-Z_0-9]{6,8}
* \w{6,8}
* 身份证号 钱17位 都是数字 第18位 0-9 X
* [0-9]{17}[0-9X]
* 手机号
* 11位
* 1[3584796]\d{9}
*/
// subString 截取
String string4 = "abcdefagefdfd";
String string5 = string4.substring(3);
System.out.println(string5);
String string6 = string4.substring(3, 6);//[左闭右开]
System.out.println(string6);
// split 拆分, 分割
String string7= "abc*def*fff";
String[] strings = string7.split("[*]");
for (String string8 : strings) {
System.out.println(string8);
}
String string8 = "张三*12*男#李四*14*女#李四*14*女#李四*14*女";
String[] split = string8.split("#");
for (String string9 : split) {
String[] split2 = string9.split("#");
// 创建Student对象
Student stu = new Student(strings2[0],strings2[1],strings2[2]);
}
}
}
3.random随机数
public class Test3 {
public static void main(String[] args) {
double d = Math.random();// [0,1); 0.99999999999
System.out.println(d);
// (int)(Math.random()*(最大值-最小值+1)+最小值)
// 10~20
int num = (int)(Math.random()*(20-10+1)+10);
System.out.println(num);
// -36 ~ 36 之间的数
int num2 = (int)(Math.random()*(36-(-36)+1)+(-36));
System.out.println(num2);
//(int)4.5 = 4
// 四舍五入
long l = Math.round(4.4);
System.out.println(l);
}
}
4. Date类
public class Test5 {
public static void main(String[] args) {
// ed Jan 06 11:38:00 IRKT 2021
// 2021-01-06 11:39:50;
// 通过符号进行 解析
//SimpleDateFormat 将Date-->String
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss SSS WW ");
String string = dateFormat.format(date);
System.out.println(string);
// 2012年03月09日入职的 , 计算这个人从入职到现在多少天
// 也可以将String 存储的时间, --> Date
String string2 ="2012年03月09日";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年M月dd日");
try {
Date date2 = simpleDateFormat.parse(string2);
//计算这个人从入职到现在惊了多少天
long t = date2.getTime();// 从1970年到date2时间经历的毫秒数 123
System.out.println(t);
Date date3 = new Date();// 当前时间
long t2 = date3.getTime();// 当前时间和1970的差值 256
System.out.println(t2);
long t3 = t2-t;// t3代表的是从2021-2012时间差
System.out.println(t3);
// 将毫秒数转成天数:
long day = t3/(24*60*60*1000);
System.out.println("从入职到现在经历的天数:"+day);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class DateTest {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
date.setYear(122);
date.setMonth(24);
date.setDate(32);
System.out.println("年"+date.getYear());// 从1900开始算
System.out.println("月"+date.getMonth());// 0~11
System.out.println("日"+date.getDate());
System.out.println("星期:"+date.getDay());
System.out.println("时:"+date.getHours());
System.out.println("分:"+date.getMinutes());
System.out.println("秒:"+date.getSeconds());
// 从1970年1月1日凌晨 到现在的经历
System.out.println(date.getTime());
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
System.out.println("月"+calendar.get(Calendar.MONTH));// 月是从0开始的
System.out.println("日"+calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("小时"+calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分"+calendar.get(Calendar.MINUTE));
System.out.println("秒"+calendar.get(Calendar.SECOND));
System.out.println(calendar);
}
}