一.长度和空值判断
length() - 字符串长度
String str = "Hello";
int len = str.length(); // 5
isEmpty() - 是否为空
String s1 = "";
String s2 = "Hello";
s1.isEmpty(); // true
s2.isEmpty(); // false
isBlank() - 是否空白(Java 11+)
String s1 = " ";
String s2 = "Hello";
s1.isBlank(); // true(只包含空白字符)
s2.isBlank(); // false
二.字符访问
charAt() - 获取指定位置字符
String str = "Hello";
char c = str.charAt(1); // 'e'
codePointAt() - 获取字符的 Unicode 代码点
String str = "A";
int code = str.codePointAt(0); // 65
toCharArray() - 转换为 char 数组
String str = "Hello";
char[] chars = str.toCharArray(); // ['H','e','l','l','o']
三.字符串比较
equals() - 内容比较
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");
s1.equals(s2); // true
s1.equals(s3); // true(比较内容)
s1 == s2; // true(常量池相同引用)
s1 == s3; // false(不同对象)
equalsIgnoreCase() - 忽略大小写比较
String s1 = "Hello";
String s2 = "HELLO";
s1.equalsIgnoreCase(s2); // true
compareTo() - 字典顺序比较
String s1 = "abc";
String s2 = "abd";
String s3 = "abb";
s1.compareTo(s2); // -1(s1 < s2)
s1.compareTo(s3); // 1(s1 > s3)
s1.compareTo("abc"); // 0(相等)
compareToIgnoreCase() - 忽略大小写比较
String s1 = "ABC";
String s2 = "abc";
s1.compareToIgnoreCase(s2); // 0
四.字符串查找
contains() - 是否包含子串
String str = "Hello World";
boolean hasHello = str.contains("Hello"); // true
boolean hasJava = str.contains("Java"); // false
indexOf() - 查找子串位置
String str = "Hello World";
int pos1 = str.indexOf('o'); // 4(第一个'o'的位置)
int pos2 = str.indexOf('o', 5); // 7(从位置5开始找)
int pos3 = str.indexOf("World"); // 6
int pos4 = str.indexOf("Java"); // -1(未找到)
lastIndexOf() - 从后往前查找
String str = "Hello World";
int pos1 = str.lastIndexOf('o'); // 7(最后一个'o')
int pos2 = str.lastIndexOf("lo"); // 3
startsWith() - 是否以指定字符串开头
String str = "Hello World";
str.startsWith("Hello"); // true
str.startsWith("He", 0); // true
str.startsWith("World", 6); // true(从位置6开始)
endsWith() - 是否以指定字符串结尾
String str = "Hello World";
str.endsWith("World"); // true
str.endsWith("lo"); // false
五.字符串截取和拆分
substring() - 截取子串
String str = "Hello World";
String sub1 = str.substring(6); // "World"(从6到最后)
String sub2 = str.substring(0, 5); // "Hello"([0,5))
split() - 分割字符串
String str = "apple,banana,orange";
String[] fruits = str.split(","); // ["apple","banana","orange"]
// 限制分割次数
String[] parts = str.split(",", 2); // ["apple","banana,orange"]
// 使用正则表达式
String str2 = "a b c d";
String[] words = str2.split("\\s+"); // ["a","b","c","d"]
join() - 连接字符串(Java 8+)
String[] arr = {"A", "B", "C"};
String result = String.join("-", arr); // "A-B-C"
List<String> list = Arrays.asList("X", "Y", "Z");
String result2 = String.join(", ", list); // "X, Y, Z"
六.字符串替换
replace() - 字符/字符串替换
String str = "Hello World";
String newStr1 = str.replace('l', 'L'); // "HeLLo WorLd"
String newStr2 = str.replace("World", "Java"); // "Hello Java"
replaceAll() - 正则表达式替换
String str = "a1b2c3";
String newStr = str.replaceAll("\\d", "*"); // "a*b*c*"
// 删除所有空格
String str2 = "a b c d";
String noSpace = str2.replaceAll("\\s+", ""); // "abcd"
replaceFirst() - 替换第一个匹配
String str = "aaabbbaaa";
String newStr = str.replaceFirst("aaa", "XXX"); // "XXXbbbaaa"
strip() - 去除两端空白(Java 11+)
String str = " Hello World ";
String stripped = str.strip(); // "Hello World"
// 还有特定方向的去除
str.stripLeading(); // "Hello World "(去左空白)
str.stripTrailing(); // " Hello World"(去右空白)
七.大小写转换
toLowerCase() - 转换为小写
String str = "Hello WORLD";
String lower = str.toLowerCase(); // "hello world"
toUpperCase() - 转换为大写
String str = "Hello World";
String upper = str.toUpperCase(); // "HELLO WORLD"
八.去除空格
trim() - 去除两端空格
String str = " Hello World ";
String trimmed = str.trim(); // "Hello World"
九.格式化方法
format() - 格式化字符串
String formatted = String.format("姓名:%s,年龄:%d", "张三", 25);
// "姓名:张三,年龄:25"
formatted() - 实例方法(Java 15+)
String template = "欢迎 %s!";
String result = template.formatted("用户"); // "欢迎 用户!"
十.类型转换
valueOf() - 转换为字符串
String s1 = String.valueOf(123); // "123"
String s2 = String.valueOf(45.67); // "45.67"
String s3 = String.valueOf(true); // "true"
String s4 = String.valueOf(new char[]{'a','b'}); // "ab"
toString() - 对象字符串表示
String str = "Hello";
String s = str.toString(); // "Hello"(String本身就是字符串)
getBytes() - 转换为字节数组
String str = "Hello";
byte[] bytes1 = str.getBytes(); // 默认编码
byte[] bytes2 = str.getBytes("UTF-8"); // 指定编码
十一.正则表达式方法
matches() - 正则匹配
String str = "12345";
boolean isNumber = str.matches("\\d+"); // true
String email = "test@example.com";
boolean isEmail = email.matches("^[\\w-]+@[\\w-]+\\.[a-z]{2,3}$");
split() - 正则分割(前面已介绍)
十二.Java 11+ 新增方法
repeat() - 重复字符串
String str = "Hi";
String repeated = str.repeat(3); // "HiHiHi"
lines() - 获取行流
String text = "第一行\n第二行\n第三行";
text.lines().forEach(System.out::println);
// 输出:
// 第一行
// 第二行
// 第三行
indent() - 缩进调整
String str = "Hello\nWorld";
String indented = str.indent(2);
// " Hello\n World\n"
十三. 其他实用方法
intern() - 加入字符串常量池
String s1 = new String("Hello");
String s2 = s1.intern(); // 返回常量池中的引用
concat() - 连接字符串
String s1 = "Hello";
String s2 = " World";
String result = s1.concat(s2); // "Hello World"
subSequence() - 获取字符序列
String str = "Hello World";
CharSequence seq = str.subSequence(0, 5); // "Hello"

被折叠的 条评论
为什么被折叠?



