与字符串相关的三个类:String、StringBuffer、StringBuilder
1.1 三者特点详解String:
StringBuffer: 可变的字符序列,线程安全的,效率低
StringBuilder: 可变的字符序列,线程不安全的,效率高
String转换为StringBuffer、StringBuilder: 调用StringBuffer、StringBuilder的构造器
StringBuffer、StringBuilder转换为String: 调用String的构造器或调用StringBuffer、StringBuilder的toString方法
二、String的替换、匹配、切片方法替换:replace(oldChar,newChar)
匹配:match
切片:split
String string = "StringTest";
String replaceString = string.replace("T", "t");
System.out.println(replaceString);
String newString = "12hello34world5java7891mysql456";
String stringReplaceall = newString.replaceAll("\d+", ",");
String stringReplaceall1 = newString.replaceAll("\d+", ",").replaceAll("^,|,$", "");
System.out.println(stringReplaceall);
System.out.println(stringReplaceall1);
//结果 StringTest Stringtest ,hello,world,java,mysql, hello,world,java,mysql
String stringMatch = "12345";
boolean isDigital = stringMatch.matches("\d+");//判断是不是全部是数字--true
System.out.println(isDigital);//true
String stringMatch1 = "0571-12345678";
System.out.println(stringMatch1.matches("0571-\d{7,8}"));
stringMatch1 = "0571-123456780";
System.out.println(stringMatch1.matches("0571-\d{7,8}"));
stringMatch1 = "0571-1234567d";
System.out.println(stringMatch1.matches("0571-\d{7,8}"));
//结果 true true false false
String string = "hello|world|java";
String[] strings = string.split("\|");
for (int i = 0; i < strings.length; i++) {
System.out.println(strings[i]);
}
//结果 hello world java
//结果 false true false true 2 -1三、String其他常用方法
String string = " HelloWorld ";
String string1 = " helloworld ";
System.out.println(string.isEmpty());//判空
System.out.println(string.endsWith("ld"));//以“ld”开头
System.out.println(string.startsWith("he"));//以“he”结尾
System.out.println(string.startsWith("lo", 3));//从第3个索引开始,以“lo”开头
System.out.println(string.indexOf("l"));//l第一次出现的位置
System.out.println(string.indexOf("lo", 4));//从索引4开始,第一次出现的位置
System.out.println(string.charAt(2));//返回索引=2的字符
System.out.println(string.toLowerCase());//所有字符转换为小写
System.out.println(string.toUpperCase());//所有字符转换为大写
System.out.println(string.trim());//返回字符串的副本,去掉开头结尾的空格
System.out.println(string.trim());//返回字符串的副本,去掉开头结尾的空格
System.out.println(string.equals(string1));//返回字符串内容是否相等,不忽略大小写
System.out.println(string.equalsIgnoreCase(string1));//返回字符串内容是否相等,忽略大小写
System.out.println(string.concat("String"));//将字符串添加至此字符串的结尾,等价于+
System.out.println(string.compareTo(string1));//比较两个字符串的大小
四、StringBuffer的常用方法
StringBuffer stringBuffer = new StringBuffer("abcdefghijklmnopqrstuvwxyz");
stringBuffer.append("张");
System.out.println(stringBuffer);
stringBuffer.delete(5,9);
System.out.println(stringBuffer);
stringBuffer.setCharAt(10,'京');
System.out.println(stringBuffer);
stringBuffer.replace(12,16,"京东物流");
System.out.println(stringBuffer);
stringBuffer.insert(1,"zh");
System.out.println(stringBuffer);
System.out.println(stringBuffer.length());
System.out.println(stringBuffer.reverse());
五、部分算法
5.1 获取一个字符串在另一个字符串中出现的次数
String string1 = "abcdedfffdcdddfddfdsadcddfacdfdfjkdfjk";
String subString = "cd";
int count = 0;
int index = string1.indexOf(subString);
while (index != -1) {
count ++;
index = index + subString.length();
index = string1.indexOf(subString,index);
}
System.out.println(count);
5.2 获取两个字符串最大相同子串
String string1 = "abcwerthelloyuiodef";
String string2 = "abc";
String maxString = (string1.length() > string2.length()) ? string1 : string2;//两个字符串中较长的串
String minString = (string1.length() > string2.length()) ? string2 : string1;//两个字符串中较短的串
for (int i = 0; i < minString.length(); i++) {
for (int j = 0, k = minString.length() - i; k != minString.length() + 1; j++, k++) {
String temp = minString.substring(j, k);
if (maxString.contains(temp)) {
System.out.println(temp);
}
}
}
5.3 字符串排序
String stringUnSort = "jshfkjshfkshfjkshfjdshk"; //first:make string to char[] 将字符串转换为字符数组 char[] chars = stringUnSort.toCharArray(); //对字符数组进行排序 //方法一:调用Arrays.sort()方法 Arrays.sort(chars); System.out.println(chars);



