本文共 4712 字,大约阅读时间需要 15 分钟。
Java 字符串操作指南
1 字符串截取
1.1 substring(int beginIndex)
substring(beginIndex) 方法用于从指定索引位置开始截取字符串,直到结尾。这个方法非常有用,适用于提取字符串的后部部分。
示例:
String str = "Java";System.out.println(str.substring(2)); // 输出:vas
1.2 substring(int beginIndex, int endIndex)
substring(beginIndex, endIndex) 方法用于截取从 beginIndex 到 endIndex 之间的字符,包括起始索引字符,不包括结束索引字符。
示例:
String str = "Java";System.out.println(str.substring(0, 1)); // 输出:JSystem.out.println(str.substring(1, 4)); // 输出:ava
2 字符串分割
2.1 str.split(String sign)
split(sign) 方法用于将字符串按指定分隔符分割成数组。默认情况下,会将所有分割符后面的部分都分割出来。
示例:
String family = "Grandpa,grandma,Dad,Mum,Baby";String[] arr1 = family.split(","); // 输出:["Grandpa", "grandma", "Dad", "Mum", "Baby"] 2.2 str.split(String sign, int limit)
split(sign, limit) 方法与 split(sign) 类似,但允许指定分割后的最大元素数量。
示例:
String family = "Grandpa,grandma,Dad,Mum,Baby";String[] arr2 = family.split(",", 3); // 输出:["Grandpa,grandma", "Dad", "Mum", "Baby"] 3 字符串比较
3.1 equals()
equals() 方法用于比较两个字符串是否完全相同。它会逐个字符比较,直到找到不同字符或末尾。
示例:
String str1 = "abc";String str2 = new String("abc");System.out.println(str1.equals(str2)); // 输出:true 3.2 equalsIgnoreCase()
equalsIgnoreCase() 方法与 equals() 功能类似,但比较时不区分大小写。
示例:
String str1 = "abc";String str3 = "ABC";System.out.println(str1.equalsIgnoreCase(str3)); // 输出:true
3.3 equals()与==
equals() 方法比较字符串内容,而 == 运算符比较的是对象引用是否相同。因此,使用 equals() 比较字符串内容更合适。
示例:
String s1 = "java";String s2 = new String(s1);System.out.println(s1.equals(s2)); // 输出:trueSystem.out.println(s1 == s2); // 输出:false
3.4 compareTo()
compareTo() 方法用于比较两个字符串的字典序,返回值为正、零或负,表示前一个字符串在字典序中大于、小于或等于后一个字符串。
示例:
String str = "J";String str1 = "j";System.out.println(str.compareTo(str1)); // 输出:-32System.out.println(str1.compareTo(str)); // 输出:32
4 String与int互相转换
4.1 String到int
可以使用 Integer.parseInt(str) 或 Integer.valueOf(str).intValue() 将字符串转换为整数。
示例:
String str = "123";System.out.println(Integer.parseInt(str)); // 输出:123System.out.println(Integer.valueOf(str).intValue()); // 输出:123
4.2 int到String
可以使用 String.valueOf(i)、Integer.toString(i) 或 "" + i 将整数转换为字符串。
示例:
int num = 10;System.out.println(String.valueOf(num)); // 输出:10System.out.println(Integer.toString(num)); // 输出:10String str3 = num + ""; // 输出:10
5 去除字符串中的空格
trim() 方法用于去除字符串开头和结尾的空白字符。
示例:
String str = " hello ";System.out.println(str.length()); // 输出:7System.out.println(str.trim().length()); // 输出:5
6 字符串大小写转换
6.1 toLowerCase()
toLowerCase() 方法用于将字符串中的所有字母转换为小写。
示例:
String en = "Snow White";System.out.println(en.toLowerCase()); // 输出:snow white
6.2 toUpperCase()
toUpperCase() 方法用于将字符串中的所有字母转换为大写。
示例:
String en = "Snow White";System.out.println(en.toUpperCase()); // 输出:SNOW WHITE
7 字符串替换
7.1 replace()
replace(old, new) 方法用于将字符串中的指定字符替换为新的字符。
示例:
String words = "hello java";System.out.println(words.replace("l", "D")); // 输出:heDDo java 7.2 replaceFirst()
replaceFirst(pattern, replacement) 方法用于将字符串中的第一个匹配项替换为新的字符。
示例:
String words = "hello Dad,hello Mum";String newStr = words.replaceFirst("hello", "你好 ");System.out.println(newStr); // 输出:你好 Dad,hello Mum 7.3 replaceAll()
replaceAll(pattern, replacement) 方法用于将字符串中的所有匹配项替换为新的字符。
示例:
String words = "hello Dad,hello Mum";String newStr = words.replaceAll("hello", "你好 ");System.out.println(newStr); // 输出:你好 Dad,你好 Mum 8 查找字符串
8.1 indexOf()
indexOf(char) 方法用于返回指定字符在字符串中的首次出现位置,返回 -1 表示没有找到。
示例:
String s = "Hello Java";System.out.println(s.indexOf('v')); // 输出:8System.out.println(s.indexOf('m')); // 输出:-1 8.2 lastIndexOf()
lastIndexOf(char) 方法用于返回指定字符在字符串中的最后一次出现位置,返回 -1 表示没有找到。
示例:
String words = "Friday,Sunday";System.out.println(words.lastIndexOf("day")); // 输出:10 9 StringBuffer 类
9.1 创建StringBuffer
StringBuffer() 创建一个初始容量为 16 的空缓冲区。StringBuffer(int length) 创建指定长度的缓冲区。StringBuffer(String str) 创建一个初始容量为 16 + str.length() 的缓冲区。
示例:
StringBuffer str1 = new StringBuffer(); // 容量 16StringBuffer str2 = new StringBuffer(5); // 容量 5StringBuffer str3 = new StringBuffer("我爱java"); // 容量 22System.out.println(str1.capacity()); // 输出:16System.out.println(str2.capacity()); // 输出:5System.out.println(str3.capacity()); // 输出:22 9.2 追加字符串
append(String) 方法用于在缓冲区中追加指定字符串。
示例:
StringBuffer buffer = new StringBuffer("hello,");buffer.append("World!"); // 输出:hello,World! 9.3 替换字符
setCharAt(int index, char ch) 方法用于在指定位置替换字符。
示例:
StringBuffer sb = new StringBuffer("hello");sb.setCharAt(1, 'E'); // 输出:hEllo 9.4 删除字符
deleteCharAt(int index) 方法用于删除指定位置的字符。
示例:
StringBuffer sb = new StringBuffer("She");sb.deleteCharAt(2); // 输出:Sh 10 String、StringBuffer 和 StringBuilder 类的区别
-
线程安全:
StringBuffer线程安全,适合多线程环境。StringBuilder线程不安全,效率更高。
-
速度:
- 一般情况下,速度从快到慢为:
StringBuilder > StringBuffer > String。
- 一般情况下,速度从快到慢为:
-
使用场景:
- 对于少量数据操作,直接使用
String更高效。 - 对于单线程操作大量数据,使用
StringBuilder更高效。 - 对于多线程操作大量数据,使用
StringBuffer更安全。
- 对于少量数据操作,直接使用
发表评论
最新留言
关于作者