String类
1.获取功能的常用方法
int length( ) 获取字符串长度
char charAt( ) 获取指定位置上的字符
int indexOf( ) 获取字符首次出现的位置,也可以从指定位置开始查找
lastIndexOf( ) 从后往前找
String substring( ) 从指定位置开始截取一个字符串副本
public static void main(String[] args) {
//获取功能
String s1 = "abcdabcd";
//int length() 获取字符串长度
System.out.println(s1.length()); // 8
//char charAt() 获取指定位置上的字符
System.out.println(s1.charAt(4)); //索引4对应的字符 a
//int indexOf() 获取字符首次出现的位置
System.out.println(s1.indexOf("a")); //注意是首次出现的位置
//int indexOf(str: ,fromindex: ) 从指定位置开始查找
System.out.println(s1.indexOf("a",4));
//lastIndexOf() 从后往前找
System.out.println(s1.lastIndexOf("a"));
//String substring() 从指定位置开始截取一个字符串副本
String s2=s1.substring(2,6); //截取索引2~6的字符串(不包含索引6对应的字符)
System.out.println(s2); // 2 <= res < 6
}
2.转换功能的常用方法
String toUpperCase( ) 将字符串内容全部转换为大写
String toLowerCase( ) 将字符串内容全部转换为小写
String concat(String str) 拼接指定字符串内容到原字符串末尾
String [ ] split(分割符) 通过分割符将字符串分割并以数组形式返回
public static void main(String[] args) {
String s1="WoShiChinese";
System.out.println(s1.toUpperCase()); //转大写
System.out.println(s1.toLowerCase()); //转小写
String s2 ="我爱中国";
System.out.println(s2.concat(s1)); //拼接s1字符串内容到s2字符串末尾
//String[] split(分割符)
String s3 = "张三:中国人;"+"Tom:英国人;"+"梅西:阿根廷人;";
String[] strings = s3.split(";"); //通过" ; "来截取s3字符串
System.out.println(Arrays.toString(strings));
}
3.替换功能的常用方法
String replace(char old,char new) 单个字符替换
String replace(String old,String new) 整个字符串替换
replaceAll(String regex, String replacement) 替换字符串中所有数字
replaceFirst(String regex, String replacement) 替换字符串中第一个数字
public static void main(String[] args) {
String s1 = " ab5cd7bda";
//用"A"替换字符串中所有的"a"
System.out.println(s1.replace("a","A"));
//用"G"替换字符串中所有数字 \\d表示所有字符串中所有的数字
System.out.println(s1.replaceAll("\\d","G"));
//用"R"替换字符串中第一个数字
System.out.println(s1.replaceFirst("\\d","R"));
}
4.去除字符串两端空格
String trim( ) 去除字符串两端空格(字符串中间的空格不能去除)
public static void main(String[] args) {
//String trim() 去除字符串两端空格
String s2 =" abcEF 13aD1 ";
System.out.println(s2);
System.out.println(s2.length()); //原字符串长度
System.out.println(s2.trim());//去除两端空格,字符串中间的空格不能去除
System.out.println(s2.trim().length()); //去除空格后字符串的长度
}
StringBuffer类
需要注意:
String可以直接创建字符串对象,而StringBuffer不能,需要新创建一个字符串对象。
String s1 = "abc";
StringBuffer s2 = new StringBuffer("abc");
添加功能
public StringBuffer append(String str) 在原字符串末尾添加字符串
public static void main(String[] args) {
StringBuffer s1 = new StringBuffer("abc");
s1.append("def"); // 不能使用+=
System.out.println(s1);
}
输出:abcdef
public StringBuffer insert(int offset,String str) 向指定位置插入字符串
public static void main(String[] args) {
StringBuffer s1 = new StringBuffer("abc");
//向字符串s1末尾添加"def"
s1.append("def"); // 不能使用+=
System.out.println(s1);
//向指定位置插入字符串
s1.insert(1,"ABC"); //向索引为1的位置插入字符串"ABC"
System.out.println(s1);
}
输出:aABCbcdef
删除功能
public StringBuffer deleteCharAt(int index) 删除单个字符
public StringBuffer delete(int start,int end) 删除指定区间的元素,不包含结尾
public static void main(String[] args) {
StringBuffer s1 = new StringBuffer("abcdef");
s1.deleteCharAt(2); //删除索引为2的字符
System.out.println(s1);
//删除指定区间的元素,不包含结尾
StringBuffer s2 = new StringBuffer("ABCDEF");
s2.delete(1,3);
System.out.println(s2);
}
替换功能
public StringBuffer replace(int start,int end,String str)
StringBuffer s1 = new StringBuffer("abcdef");
s1.replace(0,3,"ABC");
System.out.println(s1);
输出:ABCdef
反转功能
public StringBuffer reverse( )
StringBuffer s1 = new StringBuffer("abcdef");
s1.reverse(); //反转
System.out.println(s1);
输出:fedcba
截取功能
从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变
public static void main(String[] args) {
StringBuffer s1 = new StringBuffer("abcdef");
//从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变
String s2=s1.substring(1,4);
System.out.println(s1);
System.out.println(s2);
}
StringBuffer和String的区别
String修饰的字符串是一个值不能改变的字符串,用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间。
StringBuffer是内容可以改变的字符串,值可以改变且不需要创建新对象,在多任务执行时是安全的适合单线程。