声明字符串
//创建字符
char ch = 'A';
//创建字符串
String a;
String b,c,d;
//空对象 相当于 String a = null;
给字符串赋值
1、引用字符串常量
String a = "时间是金钱,我的朋友";
String a="锄禾日当午",b="小鸡炖蘑菇";
2、利用构造方法直接实例化
String a = new String("我在庆阳飞扬");
String b = new String(a);
3、利用字符数组实例化
char[] charArray = {'t','i','m','e'};
String a = new String(charArray);
String b = new String(charArray,0,4);
//第二位为起始位置,第三位为长度
4、利用字节数组实例化
byte[] byteArray = {-60,-6,-70,-61};
String a = new String(byteArray);
连接字符串
String a = "123"+"456";
String a = "123";
a += "456";
获取字符串长度
String a = "1234567";
int size = a.length();
字符串查找
//返回搜索字符串或字符串首次出现的位置 无 返回-1 有则返回起始位置int
str.indexOf("abc");
//返回搜索字符串或字符最后一次出现的位置 无 返回-1
str.lastIndexOf("abc");
//如果lastIndexOf的参数是空字符串 则返回查询字符串的长度
日期格式化
Date date= new Date();
String year = String.fomate("%tY",date);
String month = String.fomate("%tB",date);
String day = String.fomate("%td",date);
String hour = String.fomate("%tH",date);
String minute = String.fomate("%tM",date);
String second = String.fomate("%tS",date);
常规格式化:
%c char
%d int
%b boolean
%s string
%% %
%e 科学计数法
正则表达式
//邮箱
String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
String a1 = "1111";
String a2 = "@163.com";
String a3 = "rich@163.vip.com";
String a4 = "outman@163.com";
System.out.println(a1.matches(regex));
//手机
String regex = "1[345789]\\d{9}";
String a1 = "13454545454";
boolean b = a1.matches(regex);
StringBuffer类 字符串中的战斗机
线程安全的可变字符序列,String字符串对象是不可修改的
StringBuffer sbf = new StringBuffer();
StringBuffer sbf = new StringBuffer("abc");
StringBuffer sbf = new StringBuffer(32);//创建的厨师容量为32个字符
//常用方法
public StringBuffer append(Object obj);
StringBuffer sbf = new StringBuffer("门前大桥下");
StringBuffer tmp = new StringBuffer("快来快来数一数");
sbf.append(tmp);
int x = 24678;
sbf.append(x);
//修改指定索引的值
public void setCharAt(int index,char ch);
StringBuffer sbf = new StringBuffer("0123456");
sbf.setCharAt(3,'A');
//插入字符串
public StringBuffer insert(int offset,String str);
StringBuffer sbf = new StringBuffer("0123456");
sbf = sbf.insert(5,"F");
//字符串反序
StringBuffer sbf = new StringBuffer("The beautiful flower");
sbf = sbf.reverse();
//删除子字符串
StringBuffer sbf = new StringBuffer("The beautiful flower");
sbf = sbf.delete(4,7);
//与String类似的方法
.length()
.charAt(5);
.indexOf("DEF");
.substring(0,2);
replace(2,5,"12345");//2~5替换为 12345
StringBuilder类
与StringBuffer常用方法相同,是线程不安全的。效率更高
StringBuffer StringBuilder String之间的关系
String只能赋值一次,每次改变内容都会生成一个新的对象,性能低 字符串常量 线程不安全
StringBuffer 每次操作都是对自身对象做操作,字符串变量 效率中 线程安全
StringBuilder 字符串变量,线程不安全 效率高
操作少 数据少 String
单线程 操作多 数据多 StringBuilder
多线程 操作多 数据多 StringBuffer